<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::GreedyProjectionTriangulation&lt; PointInT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_greedy_projection_triangulation.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-static-methods">静态 Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1_greedy_projection_triangulation-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::GreedyProjectionTriangulation&lt; PointInT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html" title="GreedyProjectionTriangulation is an implementation of a greedy triangulation algorithm for 3D points ...">GreedyProjectionTriangulation</a> is an implementation of a greedy triangulation algorithm for 3D points based on local 2D projections. It assumes locally smooth surfaces and relatively smooth transitions between areas with different point densities.  
 <a href="classpcl_1_1_greedy_projection_triangulation.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="gp3_8h_source.html">gp3.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::GreedyProjectionTriangulation&lt; PointInT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_greedy_projection_triangulation.png" usemap="#pcl::GreedyProjectionTriangulation_3C_20PointInT_20_3E_map" alt=""/>
  <map id="pcl::GreedyProjectionTriangulation_3C_20PointInT_20_3E_map" name="pcl::GreedyProjectionTriangulation_3C_20PointInT_20_3E_map">
<area href="classpcl_1_1_mesh_construction.html" title="MeshConstruction represents a base surface reconstruction class. All mesh constructing methods that t..." alt="pcl::MeshConstruction&lt; PointInT &gt;" shape="rect" coords="0,112,276,136"/>
<area href="classpcl_1_1_p_c_l_surface_base.html" title="Pure abstract class. All types of meshing/reconstruction algorithms in libpcl_surface must inherit fr..." alt="pcl::PCLSurfaceBase&lt; PointInT &gt;" shape="rect" coords="0,56,276,80"/>
<area href="classpcl_1_1_p_c_l_base.html" alt="pcl::PCLBase&lt; PointInT &gt;" shape="rect" coords="0,0,276,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1double_edge.html">doubleEdge</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for storing the edges starting from a fringe point  <a href="structpcl_1_1_greedy_projection_triangulation_1_1double_edge.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for storing the angles to nearest neighbors  <a href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a66ce4391e2953e9e27fc510cfd367e57"><td class="memItemLeft" align="right" valign="top"><a id="a66ce4391e2953e9e27fc510cfd367e57"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>GP3Type</b> { <br />
&#160;&#160;<b>NONE</b> = -1
, <b>FREE</b> = 0
, <b>FRINGE</b> = 1
, <b>BOUNDARY</b> = 2
, <br />
&#160;&#160;<b>COMPLETED</b> = 3
<br />
 }</td></tr>
<tr class="separator:a66ce4391e2953e9e27fc510cfd367e57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a658ce8c79b7803560d6906f881bba64a"><td class="memItemLeft" align="right" valign="top"><a id="a658ce8c79b7803560d6906f881bba64a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">GreedyProjectionTriangulation</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a658ce8c79b7803560d6906f881bba64a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cafba7c33301a1458c6d207c9de8827"><td class="memItemLeft" align="right" valign="top"><a id="a0cafba7c33301a1458c6d207c9de8827"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">GreedyProjectionTriangulation</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a0cafba7c33301a1458c6d207c9de8827"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bd0d428a55408547fe31d6917ab5772"><td class="memItemLeft" align="right" valign="top"><a id="a2bd0d428a55408547fe31d6917ab5772"></a>
typedef <a class="el" href="classpcl_1_1_kd_tree.html">pcl::KdTree</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a2bd0d428a55408547fe31d6917ab5772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a007c19e7861cd47835be2c9179c3ab26"><td class="memItemLeft" align="right" valign="top"><a id="a007c19e7861cd47835be2c9179c3ab26"></a>
typedef <a class="el" href="classpcl_1_1_kd_tree.html">pcl::KdTree</a>&lt; PointInT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a007c19e7861cd47835be2c9179c3ab26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9893902af0672bfd03d43d0a381c8ed"><td class="memItemLeft" align="right" valign="top"><a id="ac9893902af0672bfd03d43d0a381c8ed"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudIn</b></td></tr>
<tr class="separator:ac9893902af0672bfd03d43d0a381c8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a141b14ab1502d0444c63c87573922510"><td class="memItemLeft" align="right" valign="top"><a id="a141b14ab1502d0444c63c87573922510"></a>
typedef PointCloudIn::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudInPtr</b></td></tr>
<tr class="separator:a141b14ab1502d0444c63c87573922510"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a937ec96d104aa2ce3f79490a3157ee71"><td class="memItemLeft" align="right" valign="top"><a id="a937ec96d104aa2ce3f79490a3157ee71"></a>
typedef PointCloudIn::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudInConstPtr</b></td></tr>
<tr class="separator:a937ec96d104aa2ce3f79490a3157ee71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_mesh_construction"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_mesh_construction')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_mesh_construction.html">pcl::MeshConstruction&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a823b50cfbf8f8d702ffc2a0254fae2dd inherit pub_types_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top"><a id="a823b50cfbf8f8d702ffc2a0254fae2dd"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_mesh_construction.html">MeshConstruction</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a823b50cfbf8f8d702ffc2a0254fae2dd inherit pub_types_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d1f7584e0768184f984cea5662111bd inherit pub_types_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top"><a id="a4d1f7584e0768184f984cea5662111bd"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_mesh_construction.html">MeshConstruction</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a4d1f7584e0768184f984cea5662111bd inherit pub_types_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a2f84799184d18b1a1cd975b1150141be inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a2f84799184d18b1a1cd975b1150141be"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">PCLSurfaceBase</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a2f84799184d18b1a1cd975b1150141be inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36f91263ab6849f650394555962009b9 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a36f91263ab6849f650394555962009b9"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">PCLSurfaceBase</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a36f91263ab6849f650394555962009b9 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af69dc51274aeb35ad9d2f5a7c2bc9b13 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="af69dc51274aeb35ad9d2f5a7c2bc9b13"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:af69dc51274aeb35ad9d2f5a7c2bc9b13 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d522cbb4c45e2d477244fffd4b6e224 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a5d522cbb4c45e2d477244fffd4b6e224"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a5d522cbb4c45e2d477244fffd4b6e224 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a9362b801bcf8beff54e85dfa1899d0e0"><td class="memItemLeft" align="right" valign="top"><a id="a9362b801bcf8beff54e85dfa1899d0e0"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a9362b801bcf8beff54e85dfa1899d0e0">GreedyProjectionTriangulation</a> ()</td></tr>
<tr class="memdesc:a9362b801bcf8beff54e85dfa1899d0e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a9362b801bcf8beff54e85dfa1899d0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaef2c77774b0cc22b1b4fd0189f8042"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#aeaef2c77774b0cc22b1b4fd0189f8042">setMu</a> (double mu)</td></tr>
<tr class="memdesc:aeaef2c77774b0cc22b1b4fd0189f8042"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the multiplier of the nearest neighbor distance to obtain the final search radius for each point (this will make the algorithm adapt to different point densities in the cloud).  <a href="classpcl_1_1_greedy_projection_triangulation.html#aeaef2c77774b0cc22b1b4fd0189f8042">更多...</a><br /></td></tr>
<tr class="separator:aeaef2c77774b0cc22b1b4fd0189f8042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8b556b2b89d707b8ebf23aca3c6b878"><td class="memItemLeft" align="right" valign="top"><a id="aa8b556b2b89d707b8ebf23aca3c6b878"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#aa8b556b2b89d707b8ebf23aca3c6b878">getMu</a> () const</td></tr>
<tr class="memdesc:aa8b556b2b89d707b8ebf23aca3c6b878"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the nearest neighbor distance multiplier. <br /></td></tr>
<tr class="separator:aa8b556b2b89d707b8ebf23aca3c6b878"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c0cfbd5d9843f2414e5ff426b61e2e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8c0cfbd5d9843f2414e5ff426b61e2e5">setMaximumNearestNeighbors</a> (int nnn)</td></tr>
<tr class="memdesc:a8c0cfbd5d9843f2414e5ff426b61e2e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of nearest neighbors to be searched for.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a8c0cfbd5d9843f2414e5ff426b61e2e5">更多...</a><br /></td></tr>
<tr class="separator:a8c0cfbd5d9843f2414e5ff426b61e2e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e12123b0d887bd368bfb4135ce29234"><td class="memItemLeft" align="right" valign="top"><a id="a0e12123b0d887bd368bfb4135ce29234"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a0e12123b0d887bd368bfb4135ce29234">getMaximumNearestNeighbors</a> () const</td></tr>
<tr class="memdesc:a0e12123b0d887bd368bfb4135ce29234"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of nearest neighbors to be searched for. <br /></td></tr>
<tr class="separator:a0e12123b0d887bd368bfb4135ce29234"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05c546fbd885e103573960ff22d70454"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a05c546fbd885e103573960ff22d70454">setSearchRadius</a> (double radius)</td></tr>
<tr class="memdesc:a05c546fbd885e103573960ff22d70454"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the sphere radius that is to be used for determining the k-nearest neighbors used for triangulating.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a05c546fbd885e103573960ff22d70454">更多...</a><br /></td></tr>
<tr class="separator:a05c546fbd885e103573960ff22d70454"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cda00f949e8854e5f6f5864317114eb"><td class="memItemLeft" align="right" valign="top"><a id="a9cda00f949e8854e5f6f5864317114eb"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a9cda00f949e8854e5f6f5864317114eb">getSearchRadius</a> () const</td></tr>
<tr class="memdesc:a9cda00f949e8854e5f6f5864317114eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the sphere radius used for determining the k-nearest neighbors. <br /></td></tr>
<tr class="separator:a9cda00f949e8854e5f6f5864317114eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac379baa93391656d84824ea5a9806b1f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ac379baa93391656d84824ea5a9806b1f">setMinimumAngle</a> (double minimum_angle)</td></tr>
<tr class="memdesc:ac379baa93391656d84824ea5a9806b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the minimum angle each triangle should have.  <a href="classpcl_1_1_greedy_projection_triangulation.html#ac379baa93391656d84824ea5a9806b1f">更多...</a><br /></td></tr>
<tr class="separator:ac379baa93391656d84824ea5a9806b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba8da36a370dae1a2c214562ee4accce"><td class="memItemLeft" align="right" valign="top"><a id="aba8da36a370dae1a2c214562ee4accce"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#aba8da36a370dae1a2c214562ee4accce">getMinimumAngle</a> () const</td></tr>
<tr class="memdesc:aba8da36a370dae1a2c214562ee4accce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parameter for distance based weighting of neighbors. <br /></td></tr>
<tr class="separator:aba8da36a370dae1a2c214562ee4accce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf103aba42e0132f580a755010188481"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#adf103aba42e0132f580a755010188481">setMaximumAngle</a> (double maximum_angle)</td></tr>
<tr class="memdesc:adf103aba42e0132f580a755010188481"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum angle each triangle can have.  <a href="classpcl_1_1_greedy_projection_triangulation.html#adf103aba42e0132f580a755010188481">更多...</a><br /></td></tr>
<tr class="separator:adf103aba42e0132f580a755010188481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a8011513f286a954758ab51639a09af"><td class="memItemLeft" align="right" valign="top"><a id="a0a8011513f286a954758ab51639a09af"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a0a8011513f286a954758ab51639a09af">getMaximumAngle</a> () const</td></tr>
<tr class="memdesc:a0a8011513f286a954758ab51639a09af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parameter for distance based weighting of neighbors. <br /></td></tr>
<tr class="separator:a0a8011513f286a954758ab51639a09af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcf52c4a94f453a5ec3aab1a2d4196d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#afcf52c4a94f453a5ec3aab1a2d4196d8">setMaximumSurfaceAngle</a> (double eps_angle)</td></tr>
<tr class="memdesc:afcf52c4a94f453a5ec3aab1a2d4196d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Don't consider points for triangulation if their normal deviates more than this value from the query point's normal.  <a href="classpcl_1_1_greedy_projection_triangulation.html#afcf52c4a94f453a5ec3aab1a2d4196d8">更多...</a><br /></td></tr>
<tr class="separator:afcf52c4a94f453a5ec3aab1a2d4196d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5579952469400b1b36d95410c592fbb9"><td class="memItemLeft" align="right" valign="top"><a id="a5579952469400b1b36d95410c592fbb9"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5579952469400b1b36d95410c592fbb9">getMaximumSurfaceAngle</a> () const</td></tr>
<tr class="memdesc:a5579952469400b1b36d95410c592fbb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum surface angle. <br /></td></tr>
<tr class="separator:a5579952469400b1b36d95410c592fbb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b5c4a1eea1b1002521ae54e49dce2a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8b5c4a1eea1b1002521ae54e49dce2a4">setNormalConsistency</a> (bool consistent)</td></tr>
<tr class="memdesc:a8b5c4a1eea1b1002521ae54e49dce2a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the flag if the input normals are oriented consistently.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a8b5c4a1eea1b1002521ae54e49dce2a4">更多...</a><br /></td></tr>
<tr class="separator:a8b5c4a1eea1b1002521ae54e49dce2a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a168472229c63331a4453363652843854"><td class="memItemLeft" align="right" valign="top"><a id="a168472229c63331a4453363652843854"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a168472229c63331a4453363652843854">getNormalConsistency</a> () const</td></tr>
<tr class="memdesc:a168472229c63331a4453363652843854"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the flag for consistently oriented normals. <br /></td></tr>
<tr class="separator:a168472229c63331a4453363652843854"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a104e41b329a80b09a813ce5739fbbf41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a104e41b329a80b09a813ce5739fbbf41">setConsistentVertexOrdering</a> (bool consistent_ordering)</td></tr>
<tr class="memdesc:a104e41b329a80b09a813ce5739fbbf41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the flag to order the resulting triangle vertices consistently (positive direction around normal).  <a href="classpcl_1_1_greedy_projection_triangulation.html#a104e41b329a80b09a813ce5739fbbf41">更多...</a><br /></td></tr>
<tr class="separator:a104e41b329a80b09a813ce5739fbbf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ac6858fbd2baa971d336453f40e5826"><td class="memItemLeft" align="right" valign="top"><a id="a4ac6858fbd2baa971d336453f40e5826"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a4ac6858fbd2baa971d336453f40e5826">getConsistentVertexOrdering</a> () const</td></tr>
<tr class="memdesc:a4ac6858fbd2baa971d336453f40e5826"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the flag signaling consistently ordered triangle vertices. <br /></td></tr>
<tr class="separator:a4ac6858fbd2baa971d336453f40e5826"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af46f8ebd7cd862c3e35d35d9155e602f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#af46f8ebd7cd862c3e35d35d9155e602f">getPointStates</a> () const</td></tr>
<tr class="memdesc:af46f8ebd7cd862c3e35d35d9155e602f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the state of each point after reconstruction.  <a href="classpcl_1_1_greedy_projection_triangulation.html#af46f8ebd7cd862c3e35d35d9155e602f">更多...</a><br /></td></tr>
<tr class="separator:af46f8ebd7cd862c3e35d35d9155e602f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b41ae0e079546da1e47c1e552a50956"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a9b41ae0e079546da1e47c1e552a50956">getPartIDs</a> () const</td></tr>
<tr class="memdesc:a9b41ae0e079546da1e47c1e552a50956"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the ID of each point after reconstruction.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a9b41ae0e079546da1e47c1e552a50956">更多...</a><br /></td></tr>
<tr class="separator:a9b41ae0e079546da1e47c1e552a50956"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5da276be84af2940b940442b32816bda"><td class="memItemLeft" align="right" valign="top"><a id="a5da276be84af2940b940442b32816bda"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5da276be84af2940b940442b32816bda">getSFN</a> () const</td></tr>
<tr class="memdesc:a5da276be84af2940b940442b32816bda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the sfn list. <br /></td></tr>
<tr class="separator:a5da276be84af2940b940442b32816bda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28d3445ef71068787c44d367a9bd6020"><td class="memItemLeft" align="right" valign="top"><a id="a28d3445ef71068787c44d367a9bd6020"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a28d3445ef71068787c44d367a9bd6020">getFFN</a> () const</td></tr>
<tr class="memdesc:a28d3445ef71068787c44d367a9bd6020"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the ffn list. <br /></td></tr>
<tr class="separator:a28d3445ef71068787c44d367a9bd6020"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_mesh_construction"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_mesh_construction')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_mesh_construction.html">pcl::MeshConstruction&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a72d77b927507e8c28dd847e3c9767e24 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top"><a id="a72d77b927507e8c28dd847e3c9767e24"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_mesh_construction.html#a72d77b927507e8c28dd847e3c9767e24">MeshConstruction</a> ()</td></tr>
<tr class="memdesc:a72d77b927507e8c28dd847e3c9767e24 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a72d77b927507e8c28dd847e3c9767e24 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a1e4bb4c4cae9447611fc8f481b7f30 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top"><a id="a3a1e4bb4c4cae9447611fc8f481b7f30"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_mesh_construction.html#a3a1e4bb4c4cae9447611fc8f481b7f30">~MeshConstruction</a> ()</td></tr>
<tr class="memdesc:a3a1e4bb4c4cae9447611fc8f481b7f30 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a3a1e4bb4c4cae9447611fc8f481b7f30 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b1b6e0eca6e76f2081665d10e0e169 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_mesh_construction.html#a77b1b6e0eca6e76f2081665d10e0e169">reconstruct</a> (<a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;output)</td></tr>
<tr class="memdesc:a77b1b6e0eca6e76f2081665d10e0e169 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base method for surface reconstruction for all points given in &lt;setInputCloud (), setIndices ()&gt;  <a href="classpcl_1_1_mesh_construction.html#a77b1b6e0eca6e76f2081665d10e0e169">更多...</a><br /></td></tr>
<tr class="separator:a77b1b6e0eca6e76f2081665d10e0e169 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a052b3d739f59f0fab812ebd781387c01 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_mesh_construction.html#a052b3d739f59f0fab812ebd781387c01">reconstruct</a> (std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:a052b3d739f59f0fab812ebd781387c01 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base method for mesh construction for all points given in &lt;setInputCloud (), setIndices ()&gt;  <a href="classpcl_1_1_mesh_construction.html#a052b3d739f59f0fab812ebd781387c01">更多...</a><br /></td></tr>
<tr class="separator:a052b3d739f59f0fab812ebd781387c01 inherit pub_methods_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="aa4fba20611b3e995b9cc07dac528e4c3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#aa4fba20611b3e995b9cc07dac528e4c3">PCLSurfaceBase</a> ()</td></tr>
<tr class="memdesc:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a264840d7b5cf8d1e7e6b3c96e9920c9f"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a264840d7b5cf8d1e7e6b3c96e9920c9f">~PCLSurfaceBase</a> ()</td></tr>
<tr class="memdesc:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#af599c9767a18649344ff21d3976f1779">setSearchMethod</a> (const KdTreePtr &amp;tree)</td></tr>
<tr class="memdesc:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide an optional pointer to a search object.  <a href="classpcl_1_1_p_c_l_surface_base.html#af599c9767a18649344ff21d3976f1779">更多...</a><br /></td></tr>
<tr class="separator:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a2249d44038e0869bbf60e486ab3826af"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a2249d44038e0869bbf60e486ab3826af">getSearchMethod</a> ()</td></tr>
<tr class="memdesc:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the search method used. <br /></td></tr>
<tr class="separator:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const PointInT &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override PointCloud operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a6c14f79538439d238fdc95bc4a508f8b"><td class="memItemLeft" align="right" valign="top"><a id="a6c14f79538439d238fdc95bc4a508f8b"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a></td></tr>
<tr class="memdesc:a6c14f79538439d238fdc95bc4a508f8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The nearest neighbor distance multiplier to obtain the final search radius. <br /></td></tr>
<tr class="separator:a6c14f79538439d238fdc95bc4a508f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7473d8f0ae4d2f96b6b0eb45d502e99a"><td class="memItemLeft" align="right" valign="top"><a id="a7473d8f0ae4d2f96b6b0eb45d502e99a"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a></td></tr>
<tr class="memdesc:a7473d8f0ae4d2f96b6b0eb45d502e99a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The nearest neighbors search radius for each point and the maximum edge length. <br /></td></tr>
<tr class="separator:a7473d8f0ae4d2f96b6b0eb45d502e99a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d641fb5e6702f577c09d4c271236005"><td class="memItemLeft" align="right" valign="top"><a id="a4d641fb5e6702f577c09d4c271236005"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a></td></tr>
<tr class="memdesc:a4d641fb5e6702f577c09d4c271236005"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of nearest neighbors accepted by searching. <br /></td></tr>
<tr class="separator:a4d641fb5e6702f577c09d4c271236005"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3f21361341929d5e02ba92ab0ca9258"><td class="memItemLeft" align="right" valign="top"><a id="ac3f21361341929d5e02ba92ab0ca9258"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a></td></tr>
<tr class="memdesc:ac3f21361341929d5e02ba92ab0ca9258"><td class="mdescLeft">&#160;</td><td class="mdescRight">The preferred minimum angle for the triangles. <br /></td></tr>
<tr class="separator:ac3f21361341929d5e02ba92ab0ca9258"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07fb25fe27e6088e942b965f77281468"><td class="memItemLeft" align="right" valign="top"><a id="a07fb25fe27e6088e942b965f77281468"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a></td></tr>
<tr class="memdesc:a07fb25fe27e6088e942b965f77281468"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum angle for the triangles. <br /></td></tr>
<tr class="separator:a07fb25fe27e6088e942b965f77281468"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0720b49d49abca1bd7c9504666ddaf35"><td class="memItemLeft" align="right" valign="top"><a id="a0720b49d49abca1bd7c9504666ddaf35"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a0720b49d49abca1bd7c9504666ddaf35">eps_angle_</a></td></tr>
<tr class="memdesc:a0720b49d49abca1bd7c9504666ddaf35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum surface angle. <br /></td></tr>
<tr class="separator:a0720b49d49abca1bd7c9504666ddaf35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d230c0cd46619352ee921315e576677"><td class="memItemLeft" align="right" valign="top"><a id="a8d230c0cd46619352ee921315e576677"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8d230c0cd46619352ee921315e576677">consistent_</a></td></tr>
<tr class="memdesc:a8d230c0cd46619352ee921315e576677"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this to true if the normals of the input are consistently oriented. <br /></td></tr>
<tr class="separator:a8d230c0cd46619352ee921315e576677"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2716f15189fc93e5d1ffe3d9e32fdca5"><td class="memItemLeft" align="right" valign="top"><a id="a2716f15189fc93e5d1ffe3d9e32fdca5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a2716f15189fc93e5d1ffe3d9e32fdca5">consistent_ordering_</a></td></tr>
<tr class="memdesc:a2716f15189fc93e5d1ffe3d9e32fdca5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this to true if the output triangle vertices should be consistently oriented. <br /></td></tr>
<tr class="separator:a2716f15189fc93e5d1ffe3d9e32fdca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_mesh_construction"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_mesh_construction')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_mesh_construction.html">pcl::MeshConstruction&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:af5ff8eafba1264fa83cdadd196b37361 inherit pro_attribs_classpcl_1_1_mesh_construction"><td class="memItemLeft" align="right" valign="top"><a id="af5ff8eafba1264fa83cdadd196b37361"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_mesh_construction.html#af5ff8eafba1264fa83cdadd196b37361">check_tree_</a></td></tr>
<tr class="memdesc:af5ff8eafba1264fa83cdadd196b37361 inherit pro_attribs_classpcl_1_1_mesh_construction"><td class="mdescLeft">&#160;</td><td class="mdescRight">A flag specifying whether or not the derived reconstruction algorithm needs the search object <em>tree</em>. <br /></td></tr>
<tr class="separator:af5ff8eafba1264fa83cdadd196b37361 inherit pro_attribs_classpcl_1_1_mesh_construction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a28d2f448602636061ef7d716e0f6e930"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a></td></tr>
<tr class="memdesc:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the spatial search object. <br /></td></tr>
<tr class="separator:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:a1817076ff2985e5b5203b506bf25a979"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a1817076ff2985e5b5203b506bf25a979">performReconstruction</a> (<a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;output)</td></tr>
<tr class="memdesc:a1817076ff2985e5b5203b506bf25a979"><td class="mdescLeft">&#160;</td><td class="mdescRight">The actual surface reconstruction method.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a1817076ff2985e5b5203b506bf25a979">更多...</a><br /></td></tr>
<tr class="separator:a1817076ff2985e5b5203b506bf25a979"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac51ee840d66c0d94faa13b4fac6a9108"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ac51ee840d66c0d94faa13b4fac6a9108">performReconstruction</a> (std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:ac51ee840d66c0d94faa13b4fac6a9108"><td class="mdescLeft">&#160;</td><td class="mdescRight">The actual surface reconstruction method.  <a href="classpcl_1_1_greedy_projection_triangulation.html#ac51ee840d66c0d94faa13b4fac6a9108">更多...</a><br /></td></tr>
<tr class="separator:ac51ee840d66c0d94faa13b4fac6a9108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79446bbf7aa1f11d452fa66e96f512de"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a79446bbf7aa1f11d452fa66e96f512de">reconstructPolygons</a> (std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:a79446bbf7aa1f11d452fa66e96f512de"><td class="mdescLeft">&#160;</td><td class="mdescRight">The actual surface reconstruction method.  <a href="classpcl_1_1_greedy_projection_triangulation.html#a79446bbf7aa1f11d452fa66e96f512de">更多...</a><br /></td></tr>
<tr class="separator:a79446bbf7aa1f11d452fa66e96f512de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa25479123d362fb33682f3dbc3e9fa"><td class="memItemLeft" align="right" valign="top"><a id="a6aa25479123d362fb33682f3dbc3e9fa"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a6aa25479123d362fb33682f3dbc3e9fa">getClassName</a> () const</td></tr>
<tr class="memdesc:a6aa25479123d362fb33682f3dbc3e9fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class get name method. <br /></td></tr>
<tr class="separator:a6aa25479123d362fb33682f3dbc3e9fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a0327acc080a2b87e3c1c7335ed4b8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">connectPoint</a> (std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons, const int prev_index, const int next_index, const int next_next_index, const Eigen::Vector2f &amp;uvn_current, const Eigen::Vector2f &amp;uvn_prev, const Eigen::Vector2f &amp;uvn_next)</td></tr>
<tr class="memdesc:a2a0327acc080a2b87e3c1c7335ed4b8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forms a new triangle by connecting the current neighbor to the query point and the previous neighbor  <a href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">更多...</a><br /></td></tr>
<tr class="separator:a2a0327acc080a2b87e3c1c7335ed4b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c944c84cd512f7446e32477aa901ef2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a9c944c84cd512f7446e32477aa901ef2">closeTriangle</a> (std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:a9c944c84cd512f7446e32477aa901ef2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whenever a query point is part of a boundary loop containing 3 points, that triangle is created (called if angle constraints make it possible)  <a href="classpcl_1_1_greedy_projection_triangulation.html#a9c944c84cd512f7446e32477aa901ef2">更多...</a><br /></td></tr>
<tr class="separator:a9c944c84cd512f7446e32477aa901ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a78e2bed009eb6d84e55126694b65d8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::vector&lt; size_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a1a78e2bed009eb6d84e55126694b65d8">getTriangleList</a> (const <a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;input)</td></tr>
<tr class="memdesc:a1a78e2bed009eb6d84e55126694b65d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the list of containing triangles for each vertex in a <a class="el" href="structpcl_1_1_polygon_mesh.html">PolygonMesh</a>  <a href="classpcl_1_1_greedy_projection_triangulation.html#a1a78e2bed009eb6d84e55126694b65d8">更多...</a><br /></td></tr>
<tr class="separator:a1a78e2bed009eb6d84e55126694b65d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b066f0d2dbc5bb4609e328908b93983"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (int a, int b, int c, std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:a5b066f0d2dbc5bb4609e328908b93983"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new triangle to the current polygon mesh  <a href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">更多...</a><br /></td></tr>
<tr class="separator:a5b066f0d2dbc5bb4609e328908b93983"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8391a6d6413a3abf8f9d44eb472d3f13"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (int v, int s)</td></tr>
<tr class="memdesc:a8391a6d6413a3abf8f9d44eb472d3f13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new vertex to the advancing edge front and set its source point  <a href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">更多...</a><br /></td></tr>
<tr class="separator:a8391a6d6413a3abf8f9d44eb472d3f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
静态 Private 成员函数</h2></td></tr>
<tr class="memitem:a55efc2cd5afd039a46cf47fc9f011c31"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a55efc2cd5afd039a46cf47fc9f011c31">nnAngleSortAsc</a> (const <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a> &amp;a1, const <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a> &amp;a2)</td></tr>
<tr class="memdesc:a55efc2cd5afd039a46cf47fc9f011c31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for ascending sort of <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html" title="Struct for storing the angles to nearest neighbors">nnAngle</a>, taking visibility into account (angles to visible neighbors will be first, to the invisible ones after).  <a href="classpcl_1_1_greedy_projection_triangulation.html#a55efc2cd5afd039a46cf47fc9f011c31">更多...</a><br /></td></tr>
<tr class="separator:a55efc2cd5afd039a46cf47fc9f011c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a8cacd14b522c56210abbb0edf7d560f8"><td class="memItemLeft" align="right" valign="top"><a id="a8cacd14b522c56210abbb0edf7d560f8"></a>
<a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a></td></tr>
<tr class="memdesc:a8cacd14b522c56210abbb0edf7d560f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary variable to store a triangle (as a set of point indices) <br /></td></tr>
<tr class="separator:a8cacd14b522c56210abbb0edf7d560f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac003ea254cfc614873d41e7e1bd7b5f5"><td class="memItemLeft" align="right" valign="top"><a id="ac003ea254cfc614873d41e7e1bd7b5f5"></a>
std::vector&lt; Eigen::Vector3f, Eigen::aligned_allocator&lt; Eigen::Vector3f &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a></td></tr>
<tr class="memdesc:ac003ea254cfc614873d41e7e1bd7b5f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary variable to store point coordinates <br /></td></tr>
<tr class="separator:ac003ea254cfc614873d41e7e1bd7b5f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a974c74a1659d169ccf0d0251c13e85cb"><td class="memItemLeft" align="right" valign="top"><a id="a974c74a1659d169ccf0d0251c13e85cb"></a>
std::vector&lt; <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a></td></tr>
<tr class="memdesc:a974c74a1659d169ccf0d0251c13e85cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">A list of angles to neighbors <br /></td></tr>
<tr class="separator:a974c74a1659d169ccf0d0251c13e85cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a525739030174f36fba2aac3cb107214f"><td class="memItemLeft" align="right" valign="top"><a id="a525739030174f36fba2aac3cb107214f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a></td></tr>
<tr class="memdesc:a525739030174f36fba2aac3cb107214f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index of the current query point <br /></td></tr>
<tr class="separator:a525739030174f36fba2aac3cb107214f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dc683b806669f0d1070031688810108"><td class="memItemLeft" align="right" valign="top"><a id="a5dc683b806669f0d1070031688810108"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a></td></tr>
<tr class="memdesc:a5dc683b806669f0d1070031688810108"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of point states <br /></td></tr>
<tr class="separator:a5dc683b806669f0d1070031688810108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af35e77a56a050ddd404ff853a94a31c2"><td class="memItemLeft" align="right" valign="top"><a id="af35e77a56a050ddd404ff853a94a31c2"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a></td></tr>
<tr class="memdesc:af35e77a56a050ddd404ff853a94a31c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of sources <br /></td></tr>
<tr class="separator:af35e77a56a050ddd404ff853a94a31c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeabf5d78ffb52aeb95b0923985bad52d"><td class="memItemLeft" align="right" valign="top"><a id="aeabf5d78ffb52aeb95b0923985bad52d"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a></td></tr>
<tr class="memdesc:aeabf5d78ffb52aeb95b0923985bad52d"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of fringe neighbors in one direction <br /></td></tr>
<tr class="separator:aeabf5d78ffb52aeb95b0923985bad52d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8adba23d2eac37e0bf2c29bd89ac716"><td class="memItemLeft" align="right" valign="top"><a id="ad8adba23d2eac37e0bf2c29bd89ac716"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a></td></tr>
<tr class="memdesc:ad8adba23d2eac37e0bf2c29bd89ac716"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of fringe neighbors in other direction <br /></td></tr>
<tr class="separator:ad8adba23d2eac37e0bf2c29bd89ac716"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad218505c248a4144e56f4e40906e0644"><td class="memItemLeft" align="right" valign="top"><a id="ad218505c248a4144e56f4e40906e0644"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a></td></tr>
<tr class="memdesc:ad218505c248a4144e56f4e40906e0644"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connected component labels for each point <br /></td></tr>
<tr class="separator:ad218505c248a4144e56f4e40906e0644"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34efec59cb493b0f15f9dc9fb8af4ed0"><td class="memItemLeft" align="right" valign="top"><a id="a34efec59cb493b0f15f9dc9fb8af4ed0"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a></td></tr>
<tr class="memdesc:a34efec59cb493b0f15f9dc9fb8af4ed0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Points on the outer edge from which the mesh has to be grown <br /></td></tr>
<tr class="separator:a34efec59cb493b0f15f9dc9fb8af4ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5830d71072543c1f666111655a4bc480"><td class="memItemLeft" align="right" valign="top"><a id="a5830d71072543c1f666111655a4bc480"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">is_current_free_</a></td></tr>
<tr class="memdesc:a5830d71072543c1f666111655a4bc480"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the current point is free <br /></td></tr>
<tr class="separator:a5830d71072543c1f666111655a4bc480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0df73076b191e49c4c2489c11cc6ca9f"><td class="memItemLeft" align="right" valign="top"><a id="a0df73076b191e49c4c2489c11cc6ca9f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a></td></tr>
<tr class="memdesc:a0df73076b191e49c4c2489c11cc6ca9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current point's index <br /></td></tr>
<tr class="separator:a0df73076b191e49c4c2489c11cc6ca9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7ba0ba379a2918bf94c5bd062044bed"><td class="memItemLeft" align="right" valign="top"><a id="ab7ba0ba379a2918bf94c5bd062044bed"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a></td></tr>
<tr class="memdesc:ab7ba0ba379a2918bf94c5bd062044bed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the previous point is the first fringe neighbor <br /></td></tr>
<tr class="separator:ab7ba0ba379a2918bf94c5bd062044bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5da9205841893104882fcaafbd4096c3"><td class="memItemLeft" align="right" valign="top"><a id="a5da9205841893104882fcaafbd4096c3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a></td></tr>
<tr class="memdesc:a5da9205841893104882fcaafbd4096c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the next point is the second fringe neighbor <br /></td></tr>
<tr class="separator:a5da9205841893104882fcaafbd4096c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c179811fc6ebc53a4d24563522e03f0"><td class="memItemLeft" align="right" valign="top"><a id="a5c179811fc6ebc53a4d24563522e03f0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a></td></tr>
<tr class="memdesc:a5c179811fc6ebc53a4d24563522e03f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the next point is the first fringe neighbor <br /></td></tr>
<tr class="separator:a5c179811fc6ebc53a4d24563522e03f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38fb16d51cb651d7d9b36d04e4603ef9"><td class="memItemLeft" align="right" valign="top"><a id="a38fb16d51cb651d7d9b36d04e4603ef9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a></td></tr>
<tr class="memdesc:a38fb16d51cb651d7d9b36d04e4603ef9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the next point is the second fringe neighbor <br /></td></tr>
<tr class="separator:a38fb16d51cb651d7d9b36d04e4603ef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b7648577d92c64be0c4f6da0222c05f"><td class="memItemLeft" align="right" valign="top"><a id="a0b7648577d92c64be0c4f6da0222c05f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a></td></tr>
<tr class="memdesc:a0b7648577d92c64be0c4f6da0222c05f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the first fringe neighbor was changed <br /></td></tr>
<tr class="separator:a0b7648577d92c64be0c4f6da0222c05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a035545d65f932f6a41195257ddf26a04"><td class="memItemLeft" align="right" valign="top"><a id="a035545d65f932f6a41195257ddf26a04"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a></td></tr>
<tr class="memdesc:a035545d65f932f6a41195257ddf26a04"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the second fringe neighbor was changed <br /></td></tr>
<tr class="separator:a035545d65f932f6a41195257ddf26a04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01a6ea44f24d383699d3a28b9eab6301"><td class="memItemLeft" align="right" valign="top"><a id="a01a6ea44f24d383699d3a28b9eab6301"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a></td></tr>
<tr class="memdesc:a01a6ea44f24d383699d3a28b9eab6301"><td class="mdescLeft">&#160;</td><td class="mdescRight">New boundary point <br /></td></tr>
<tr class="separator:a01a6ea44f24d383699d3a28b9eab6301"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a2217e64683fd167457c082ebb634b"><td class="memItemLeft" align="right" valign="top"><a id="af4a2217e64683fd167457c082ebb634b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a></td></tr>
<tr class="memdesc:af4a2217e64683fd167457c082ebb634b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag to set if the next neighbor was already connected in the previous step. To avoid inconsistency it should not be connected again. <br /></td></tr>
<tr class="separator:af4a2217e64683fd167457c082ebb634b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46155f87e57c0168fb14b220aeb8eb7a"><td class="memItemLeft" align="right" valign="top"><a id="a46155f87e57c0168fb14b220aeb8eb7a"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a></td></tr>
<tr class="memdesc:a46155f87e57c0168fb14b220aeb8eb7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point coordinates projected onto the plane defined by the point normal <br /></td></tr>
<tr class="separator:a46155f87e57c0168fb14b220aeb8eb7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a723115bfb8776de196203255e23f44e7"><td class="memItemLeft" align="right" valign="top"><a id="a723115bfb8776de196203255e23f44e7"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a></td></tr>
<tr class="memdesc:a723115bfb8776de196203255e23f44e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">First coordinate vector of the 2D coordinate frame <br /></td></tr>
<tr class="separator:a723115bfb8776de196203255e23f44e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb42b5afc8cd3584245389e068ee33c"><td class="memItemLeft" align="right" valign="top"><a id="abdb42b5afc8cd3584245389e068ee33c"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a></td></tr>
<tr class="memdesc:abdb42b5afc8cd3584245389e068ee33c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Second coordinate vector of the 2D coordinate frame <br /></td></tr>
<tr class="separator:abdb42b5afc8cd3584245389e068ee33c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad213212e4a517118fc9594c71106c52d"><td class="memItemLeft" align="right" valign="top"><a id="ad213212e4a517118fc9594c71106c52d"></a>
Eigen::Vector2f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a></td></tr>
<tr class="memdesc:ad213212e4a517118fc9594c71106c52d"><td class="mdescLeft">&#160;</td><td class="mdescRight">2D coordinates of the first fringe neighbor <br /></td></tr>
<tr class="separator:ad213212e4a517118fc9594c71106c52d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ece82543e25daefde381b3b77f0c648"><td class="memItemLeft" align="right" valign="top"><a id="a8ece82543e25daefde381b3b77f0c648"></a>
Eigen::Vector2f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a></td></tr>
<tr class="memdesc:a8ece82543e25daefde381b3b77f0c648"><td class="mdescLeft">&#160;</td><td class="mdescRight">2D coordinates of the second fringe neighbor <br /></td></tr>
<tr class="separator:a8ece82543e25daefde381b3b77f0c648"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c4b4164e698154a490150c33b591c3d"><td class="memItemLeft" align="right" valign="top"><a id="a7c4b4164e698154a490150c33b591c3d"></a>
Eigen::Vector2f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a></td></tr>
<tr class="memdesc:a7c4b4164e698154a490150c33b591c3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">2D coordinates of the first fringe neighbor of the next point <br /></td></tr>
<tr class="separator:a7c4b4164e698154a490150c33b591c3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad06f641e4be9393dd7db3e67f0dd06f3"><td class="memItemLeft" align="right" valign="top"><a id="ad06f641e4be9393dd7db3e67f0dd06f3"></a>
Eigen::Vector2f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a></td></tr>
<tr class="memdesc:ad06f641e4be9393dd7db3e67f0dd06f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">2D coordinates of the second fringe neighbor of the next point <br /></td></tr>
<tr class="separator:ad06f641e4be9393dd7db3e67f0dd06f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2da87f24f3c7bfbde2171264e94eb3c9"><td class="memItemLeft" align="right" valign="top"><a id="a2da87f24f3c7bfbde2171264e94eb3c9"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a></td></tr>
<tr class="memdesc:a2da87f24f3c7bfbde2171264e94eb3c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary variable to store 3 coordiantes <br /></td></tr>
<tr class="separator:a2da87f24f3c7bfbde2171264e94eb3c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointInT&gt;<br />
class pcl::GreedyProjectionTriangulation&lt; PointInT &gt;</h3>

<p><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html" title="GreedyProjectionTriangulation is an implementation of a greedy triangulation algorithm for 3D points ...">GreedyProjectionTriangulation</a> is an implementation of a greedy triangulation algorithm for 3D points based on local 2D projections. It assumes locally smooth surfaces and relatively smooth transitions between areas with different point densities. </p>
<dl class="section author"><dt>作者</dt><dd>Zoltan Csaba Marton </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a8391a6d6413a3abf8f9d44eb472d3f13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8391a6d6413a3abf8f9d44eb472d3f13">&#9670;&nbsp;</a></span>addFringePoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::addFringePoint </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a new vertex to the advancing edge front and set its source point </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>index of the vertex that was connected </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>index of the source point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;      {</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[v] = s;</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>[v] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>[s];</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.push_back(v);</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a34efec59cb493b0f15f9dc9fb8af4ed0"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">pcl::GreedyProjectionTriangulation::fringe_queue_</a></div><div class="ttdeci">std::vector&lt; int &gt; fringe_queue_</div><div class="ttdoc">Points on the outer edge from which the mesh has to be grown</div><div class="ttdef"><b>Definition:</b> gp3.h:378</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ad218505c248a4144e56f4e40906e0644"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">pcl::GreedyProjectionTriangulation::part_</a></div><div class="ttdeci">std::vector&lt; int &gt; part_</div><div class="ttdoc">Connected component labels for each point</div><div class="ttdef"><b>Definition:</b> gp3.h:376</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_af35e77a56a050ddd404ff853a94a31c2"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">pcl::GreedyProjectionTriangulation::source_</a></div><div class="ttdeci">std::vector&lt; int &gt; source_</div><div class="ttdoc">List of sources</div><div class="ttdef"><b>Definition:</b> gp3.h:370</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5b066f0d2dbc5bb4609e328908b93983"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b066f0d2dbc5bb4609e328908b93983">&#9670;&nbsp;</a></span>addTriangle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::addTriangle </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a new triangle to the current polygon mesh </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>index of the first vertex </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>index of the second vertex </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>index of the third vertex </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the polygon mesh to be updated </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;      {</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices.resize (3);</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2716f15189fc93e5d1ffe3d9e32fdca5">consistent_ordering_</a>)</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        {</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;          <span class="keyword">const</span> PointInT p = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;at (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;at (a));</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;          <span class="keyword">const</span> Eigen::Vector3f pv = p.getVector3fMap ();</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;          <span class="keywordflow">if</span> (p.getNormalVector3fMap ().dot (</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                (pv - <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;at (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;at (b)).getVector3fMap ()).cross (</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;                 pv - <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;at (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;at (c)).getVector3fMap ()) ) &gt; 0)</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;          {</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[0] = a;</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[1] = b;</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[2] = c;</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;          }</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;          {</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[0] = a;</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[1] = c;</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[2] = b;</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;          }</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        }</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        {</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[0] = a;</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[1] = b;</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>.vertices[2] = c;</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        }</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        polygons.push_back (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">triangle_</a>);</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a2716f15189fc93e5d1ffe3d9e32fdca5"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a2716f15189fc93e5d1ffe3d9e32fdca5">pcl::GreedyProjectionTriangulation::consistent_ordering_</a></div><div class="ttdeci">bool consistent_ordering_</div><div class="ttdoc">Set this to true if the output triangle vertices should be consistently oriented.</div><div class="ttdef"><b>Definition:</b> gp3.h:335</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a8cacd14b522c56210abbb0edf7d560f8"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a8cacd14b522c56210abbb0edf7d560f8">pcl::GreedyProjectionTriangulation::triangle_</a></div><div class="ttdeci">pcl::Vertices triangle_</div><div class="ttdoc">Temporary variable to store a triangle (as a set of point indices)</div><div class="ttdef"><b>Definition:</b> gp3.h:359</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase&lt; PointInT &gt;::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase&lt; PointInT &gt;::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9c944c84cd512f7446e32477aa901ef2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c944c84cd512f7446e32477aa901ef2">&#9670;&nbsp;</a></span>closeTriangle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::closeTriangle </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Whenever a query point is part of a boundary loop containing 3 points, that triangle is created (called if angle constraints make it possible) </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the polygon mesh to be updated </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;{</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = COMPLETED;</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, polygons);</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> aIdx=0; aIdx&lt;2; aIdx++)</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;  {</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;    {</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[(aIdx+1)%2].index)</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;      {</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] = COMPLETED;</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;      }</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;      {</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[(aIdx+1)%2].index;</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;      }</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;    }</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;    {</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[(aIdx+1)%2].index)</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;      {</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] = COMPLETED;</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;      }</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;      {</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[aIdx].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[(aIdx+1)%2].index;</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;      }</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;    }</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;  }</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a525739030174f36fba2aac3cb107214f"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">pcl::GreedyProjectionTriangulation::R_</a></div><div class="ttdeci">int R_</div><div class="ttdoc">Index of the current query point</div><div class="ttdef"><b>Definition:</b> gp3.h:366</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a5b066f0d2dbc5bb4609e328908b93983"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">pcl::GreedyProjectionTriangulation::addTriangle</a></div><div class="ttdeci">void addTriangle(int a, int b, int c, std::vector&lt; pcl::Vertices &gt; &amp;polygons)</div><div class="ttdoc">Add a new triangle to the current polygon mesh</div><div class="ttdef"><b>Definition:</b> gp3.h:483</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a5dc683b806669f0d1070031688810108"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">pcl::GreedyProjectionTriangulation::state_</a></div><div class="ttdeci">std::vector&lt; int &gt; state_</div><div class="ttdoc">List of point states</div><div class="ttdef"><b>Definition:</b> gp3.h:368</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a974c74a1659d169ccf0d0251c13e85cb"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">pcl::GreedyProjectionTriangulation::angles_</a></div><div class="ttdeci">std::vector&lt; nnAngle &gt; angles_</div><div class="ttdoc">A list of angles to neighbors</div><div class="ttdef"><b>Definition:</b> gp3.h:364</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ad8adba23d2eac37e0bf2c29bd89ac716"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">pcl::GreedyProjectionTriangulation::sfn_</a></div><div class="ttdeci">std::vector&lt; int &gt; sfn_</div><div class="ttdoc">List of fringe neighbors in other direction</div><div class="ttdef"><b>Definition:</b> gp3.h:374</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_aeabf5d78ffb52aeb95b0923985bad52d"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">pcl::GreedyProjectionTriangulation::ffn_</a></div><div class="ttdeci">std::vector&lt; int &gt; ffn_</div><div class="ttdoc">List of fringe neighbors in one direction</div><div class="ttdef"><b>Definition:</b> gp3.h:372</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2a0327acc080a2b87e3c1c7335ed4b8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a0327acc080a2b87e3c1c7335ed4b8a">&#9670;&nbsp;</a></span>connectPoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::connectPoint </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>prev_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>next_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>next_next_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector2f &amp;&#160;</td>
          <td class="paramname"><em>uvn_current</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector2f &amp;&#160;</td>
          <td class="paramname"><em>uvn_prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector2f &amp;&#160;</td>
          <td class="paramname"><em>uvn_next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Forms a new triangle by connecting the current neighbor to the query point and the previous neighbor </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the polygon mesh to be updated </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">prev_index</td><td>index of the previous point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">next_index</td><td>index of the next point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">next_next_index</td><td>index of the point after the next one </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">uvn_current</td><td>2D coordinate of the current point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">uvn_prev</td><td>2D coordinates of the previous point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">uvn_next</td><td>2D coordinates of the next point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;{</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">is_current_free_</a>)</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;  {</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;  }</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;  {</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;    <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a> &amp;&amp; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a>) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a> &amp;&amp; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a>))</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = COMPLETED;</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a>)</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a>)</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a>)</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a>)</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;    {</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;      <span class="keywordtype">bool</span> found_triangle = <span class="keyword">false</span>;</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;      <span class="keywordflow">if</span> ((prev_index != <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>) &amp;&amp; ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index])))</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;      {</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;        found_triangle = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], prev_index, polygons);</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[prev_index] = COMPLETED;</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;      }</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;      <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((prev_index != <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>) &amp;&amp; ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index])))</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;      {</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;        found_triangle = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], prev_index, polygons);</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[prev_index] = COMPLETED;</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;      }</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[next_index] &gt; FREE)</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;      {</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]))</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;        {</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;          found_triangle = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], next_index, polygons);</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; </div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index])</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;          {</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;          }</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;          {</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;          }</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;        }</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]))</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;        {</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;          found_triangle = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], next_index, polygons);</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; </div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index])</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;          {</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;          }</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;          {</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;          }</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;        }</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;      }</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; </div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;      <span class="keywordflow">if</span> (found_triangle)</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;      {</div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;      }</div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;      {</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;        <span class="keywordtype">bool</span> prev_ffn = isVisible(uvn_prev, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>) &amp;&amp; isVisible(uvn_prev, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>);</div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        <span class="keywordtype">bool</span> prev_sfn = isVisible(uvn_prev, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>) &amp;&amp; isVisible(uvn_prev, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>);</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;        <span class="keywordtype">bool</span> next_ffn = isVisible(uvn_next, uvn_prev, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>) &amp;&amp; isVisible(uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>);</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;        <span class="keywordtype">bool</span> next_sfn = isVisible(uvn_next, uvn_prev, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>) &amp;&amp; isVisible(uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>);</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        <span class="keywordtype">int</span> min_dist = -1;</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;        <span class="keywordflow">if</span> (prev_ffn &amp;&amp; next_sfn &amp;&amp; prev_sfn &amp;&amp; next_ffn)</div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;        {</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;          <span class="comment">/* should be never the case */</span></div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;          <span class="keywordtype">double</span> prev2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;          <span class="keywordtype">double</span> next2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;          <span class="keywordtype">double</span> prev2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;          <span class="keywordtype">double</span> next2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;          <span class="keywordflow">if</span> (prev2f &lt; prev2s)</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;          {</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;            <span class="keywordflow">if</span> (prev2f &lt; next2f)</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;            {</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;              <span class="keywordflow">if</span> (prev2f &lt; next2s)</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;                min_dist = 0;</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;                min_dist = 3;</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;            }</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;            {</div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;              <span class="keywordflow">if</span> (next2f &lt; next2s)</div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;                min_dist = 2;</div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;                min_dist = 3;</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;            }</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;          }</div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;          {</div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;            <span class="keywordflow">if</span> (prev2s &lt; next2f)</div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;            {</div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;              <span class="keywordflow">if</span> (prev2s &lt; next2s)</div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;                min_dist = 1;</div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;                min_dist = 3;</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;            }</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;            {</div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;              <span class="keywordflow">if</span> (next2f &lt; next2s)</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;                min_dist = 2;</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;                min_dist = 3;</div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;            }</div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;          }</div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;        }</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_ffn &amp;&amp; next_sfn)</div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;        {</div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;          <span class="comment">/* a clear case */</span></div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;          <span class="keywordtype">double</span> prev2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;          <span class="keywordtype">double</span> next2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;          <span class="keywordflow">if</span> (prev2f &lt; next2s)</div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;            min_dist = 0;</div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;            min_dist = 3;</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;        }</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_sfn &amp;&amp; next_ffn)</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;        {</div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;          <span class="comment">/* a clear case */</span></div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;          <span class="keywordtype">double</span> prev2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;          <span class="keywordtype">double</span> next2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;          <span class="keywordflow">if</span> (prev2s &lt; next2f)</div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;            min_dist = 1;</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;            min_dist = 2;</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;        }</div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;        <span class="comment">/* straightforward cases */</span></div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_ffn &amp;&amp; !next_sfn &amp;&amp; !prev_sfn &amp;&amp; !next_ffn)</div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;          min_dist = 0;</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!prev_ffn &amp;&amp; !next_sfn &amp;&amp; prev_sfn &amp;&amp; !next_ffn)</div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;          min_dist = 1;</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!prev_ffn &amp;&amp; !next_sfn &amp;&amp; !prev_sfn &amp;&amp; next_ffn)</div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;          min_dist = 2;</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!prev_ffn &amp;&amp; next_sfn &amp;&amp; !prev_sfn &amp;&amp; !next_ffn)</div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;          min_dist = 3;</div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;        <span class="comment">/* messed up cases */</span></div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_ffn)</div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;        {</div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;          <span class="keywordtype">double</span> prev2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;          <span class="keywordflow">if</span> (prev_sfn)</div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;          {</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;            <span class="keywordtype">double</span> prev2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;            <span class="keywordflow">if</span> (prev2s &lt; prev2f)</div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;              min_dist = 1;</div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;              min_dist = 0;</div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;          }</div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;          <span class="keywordflow">else</span> <span class="keywordflow">if</span> (next_ffn)</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;          {</div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;            <span class="keywordtype">double</span> next2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;            <span class="keywordflow">if</span> (next2f &lt; prev2f)</div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;              min_dist = 2;</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;              min_dist = 0;</div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;          }</div>
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;        }</div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (next_sfn)</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;        {</div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;          <span class="keywordtype">double</span> next2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;          <span class="keywordflow">if</span> (prev_sfn)</div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;          {</div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;            <span class="keywordtype">double</span> prev2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[prev_index]).squaredNorm ();</div>
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;            <span class="keywordflow">if</span> (prev2s &lt; next2s)</div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;              min_dist = 1;</div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;              min_dist = 3;</div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;          }</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;          <span class="keywordflow">else</span> <span class="keywordflow">if</span> (next_ffn)</div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;          {</div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;            <span class="keywordtype">double</span> next2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[next_index]).squaredNorm ();</div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;            <span class="keywordflow">if</span> (next2f &lt; next2s)</div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;              min_dist = 2;</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;              min_dist = 3;</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;          }</div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;        }</div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;        <span class="keywordflow">switch</span> (min_dist)</div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;        {</div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;          <span class="keywordflow">case</span> 0:<span class="comment">//prev2f:</span></div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;          {</div>
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], prev_index, polygons);</div>
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; </div>
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;            <span class="comment">/* updating prev_index */</span></div>
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;            {</div>
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;            }</div>
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;            {</div>
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;            }</div>
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;            {</div>
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;            }</div>
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;            {</div>
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;            }</div>
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;            {</div>
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;            }</div>
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; </div>
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;            <span class="comment">/* updating ffn */</span></div>
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;            {</div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = prev_index;</div>
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;            }</div>
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;            {</div>
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = prev_index;</div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;            }</div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; </div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;            <span class="comment">/* updating current */</span></div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; </div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;          }</div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;          <span class="keywordflow">case</span> 1:<span class="comment">//prev2s:</span></div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;          {</div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], prev_index, polygons);</div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; </div>
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;            <span class="comment">/* updating prev_index */</span></div>
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;            {</div>
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;            }</div>
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;            {</div>
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;            }</div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;            {</div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;            }</div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;            {</div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[prev_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;            }</div>
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (prev_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;            {</div>
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;            }</div>
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; </div>
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;            <span class="comment">/* updating sfn */</span></div>
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;            {</div>
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = prev_index;</div>
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;            }</div>
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;            {</div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = prev_index;</div>
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;            }</div>
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; </div>
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;            <span class="comment">/* updating current */</span></div>
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = next_index;</div>
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; </div>
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;          }</div>
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;          <span class="keywordflow">case</span> 2:<span class="comment">//next2f:</span></div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;          {</div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], next_index, polygons);</div>
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;            <span class="keywordtype">int</span> neighbor_update = next_index;</div>
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; </div>
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;            <span class="comment">/* updating next_index */</span></div>
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[next_index] &lt;= FREE)</div>
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;            {</div>
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[next_index] = FRINGE;</div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;            }</div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;            {</div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;              {</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;              }</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;              {</div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;              }</div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (next_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;              {</div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;                <span class="keywordflow">if</span> (next_next_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>)</div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;              }</div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] == next_next_index)</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;              {</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;              }</div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] == next_next_index)</div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;              {</div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;              }</div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;              {</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; </div>
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;                <span class="keywordtype">bool</span> ffn_next_ffn = isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>) &amp;&amp; isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>);</div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;                <span class="keywordtype">bool</span> sfn_next_ffn = isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>) &amp;&amp; isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">uvn_ffn_</a>);</div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; </div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;                <span class="keywordtype">int</span> connect2ffn = -1;</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;                <span class="keywordflow">if</span> (ffn_next_ffn &amp;&amp; sfn_next_ffn)</div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;                {</div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;                  <span class="keywordtype">double</span> fn2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]]).squaredNorm ();</div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;                  <span class="keywordtype">double</span> sn2f = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]]).squaredNorm ();</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;                  <span class="keywordflow">if</span> (fn2f &lt; sn2f) connect2ffn = 0;</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;                  <span class="keywordflow">else</span> connect2ffn = 1;</div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;                }</div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ffn_next_ffn) connect2ffn = 0;</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sfn_next_ffn) connect2ffn = 1;</div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; </div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;                <span class="keywordflow">switch</span> (connect2ffn)</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;                {</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;                  <span class="keywordflow">case</span> 0: <span class="comment">// ffn[next]</span></div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;                  {</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (next_index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index], polygons);</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;                    neighbor_update = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index];</div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; </div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;                    <span class="comment">/* ffn[next_index] */</span></div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;                    <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]))</div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;                    {</div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = COMPLETED;</div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;                    }</div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;                    {</div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;                    }</div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;                    {</div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;                    }</div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; </div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; </div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;                  }</div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;                  <span class="keywordflow">case</span> 1: <span class="comment">// sfn[next]</span></div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;                  {</div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (next_index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index], polygons);</div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;                    neighbor_update = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index];</div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; </div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;                    <span class="comment">/* sfn[next_index] */</span></div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;                    <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]))</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;                    {</div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = COMPLETED;</div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;                    }</div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;                    {</div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;                    }</div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;                    {</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;                    }</div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; </div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; </div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;                  }</div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;                  <span class="keywordflow">default</span>:;</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;                }</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;              }</div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;            }</div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; </div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;            <span class="comment">/* updating ffn */</span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == neighbor_update) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == neighbor_update))</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;            {</div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;            }</div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;            {</div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = neighbor_update;</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;            }</div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;            {</div>
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = neighbor_update;</div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;            }</div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; </div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;            <span class="comment">/* updating current */</span></div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; </div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;          }</div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;          <span class="keywordflow">case</span> 3:<span class="comment">//next2s:</span></div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;          {</div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], next_index, polygons);</div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;            <span class="keywordtype">int</span> neighbor_update = next_index;</div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; </div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;            <span class="comment">/* updating next_index */</span></div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[next_index] &lt;= FREE)</div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;            {</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[next_index] = FRINGE;</div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;            }</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;            {</div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;              {</div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;              }</div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;              {</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;              }</div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (next_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>)</div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;              {</div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;                <span class="keywordflow">if</span> (next_next_index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>)</div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;              }</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] == next_next_index)</div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;              {</div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;              }</div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;              <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] == next_next_index)</div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;              {</div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;              }</div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;              {</div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; </div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;                <span class="keywordtype">bool</span> ffn_next_sfn = isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>) &amp;&amp; isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>);</div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;                <span class="keywordtype">bool</span> sfn_next_sfn = isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, uvn_next, uvn_current, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>) &amp;&amp; isVisible(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">uvn_next_sfn_</a>, uvn_next, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">uvn_next_ffn_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">uvn_sfn_</a>);</div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; </div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;                <span class="keywordtype">int</span> connect2sfn = -1;</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;                <span class="keywordflow">if</span> (ffn_next_sfn &amp;&amp; sfn_next_sfn)</div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;                {</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;                  <span class="keywordtype">double</span> fn2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]]).squaredNorm ();</div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;                  <span class="keywordtype">double</span> sn2s = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]]).squaredNorm ();</div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;                  <span class="keywordflow">if</span> (fn2s &lt; sn2s) connect2sfn = 0;</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;                  <span class="keywordflow">else</span> connect2sfn = 1;</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;                }</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ffn_next_sfn) connect2sfn = 0;</div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sfn_next_sfn) connect2sfn = 1;</div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; </div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;                <span class="keywordflow">switch</span> (connect2sfn)</div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;                {</div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;                  <span class="keywordflow">case</span> 0: <span class="comment">// ffn[next]</span></div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;                  {</div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (next_index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index], polygons);</div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;                    neighbor_update = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index];</div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; </div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;                    <span class="comment">/* ffn[next_index] */</span></div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;                    <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]))</div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;                    {</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = COMPLETED;</div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;                    }</div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;                    {</div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;                    }</div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;                    {</div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;                    }</div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; </div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; </div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;                  }</div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;                  <span class="keywordflow">case</span> 1: <span class="comment">// sfn[next]</span></div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;                  {</div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (next_index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>], <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index], polygons);</div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;                    neighbor_update = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index];</div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; </div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;                    <span class="comment">/* sfn[next_index] */</span></div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;                    <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]))</div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;                    {</div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = COMPLETED;</div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;                    }</div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;                    {</div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;                    }</div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] == next_index)</div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;                    {</div>
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;                      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>];</div>
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;                    }</div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; </div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;                    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[next_index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; </div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;                  }</div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;                  <span class="keywordflow">default</span>:;</div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;                }</div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;              }</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;            }</div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; </div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;            <span class="comment">/* updating sfn */</span></div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == neighbor_update) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == neighbor_update))</div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;            {</div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = COMPLETED;</div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;            }</div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;            {</div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = neighbor_update;</div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;            }</div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>)</div>
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;            {</div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>]] = neighbor_update;</div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;            }</div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; </div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = prev_index;</div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; </div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;          }</div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;          <span class="keywordflow">default</span>:;</div>
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;        }</div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;      }</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    }</div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;  }</div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a01a6ea44f24d383699d3a28b9eab6301"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">pcl::GreedyProjectionTriangulation::new2boundary_</a></div><div class="ttdeci">int new2boundary_</div><div class="ttdoc">New boundary point</div><div class="ttdef"><b>Definition:</b> gp3.h:397</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a035545d65f932f6a41195257ddf26a04"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">pcl::GreedyProjectionTriangulation::changed_2nd_fn_</a></div><div class="ttdeci">bool changed_2nd_fn_</div><div class="ttdoc">Flag to set if the second fringe neighbor was changed</div><div class="ttdef"><b>Definition:</b> gp3.h:395</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a0b7648577d92c64be0c4f6da0222c05f"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">pcl::GreedyProjectionTriangulation::changed_1st_fn_</a></div><div class="ttdeci">bool changed_1st_fn_</div><div class="ttdoc">Flag to set if the first fringe neighbor was changed</div><div class="ttdef"><b>Definition:</b> gp3.h:393</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a0df73076b191e49c4c2489c11cc6ca9f"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">pcl::GreedyProjectionTriangulation::current_index_</a></div><div class="ttdeci">int current_index_</div><div class="ttdoc">Current point's index</div><div class="ttdef"><b>Definition:</b> gp3.h:383</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a2da87f24f3c7bfbde2171264e94eb3c9"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">pcl::GreedyProjectionTriangulation::tmp_</a></div><div class="ttdeci">Eigen::Vector3f tmp_</div><div class="ttdoc">Temporary variable to store 3 coordiantes</div><div class="ttdef"><b>Definition:</b> gp3.h:420</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a38fb16d51cb651d7d9b36d04e4603ef9"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">pcl::GreedyProjectionTriangulation::next_is_sfn_</a></div><div class="ttdeci">bool next_is_sfn_</div><div class="ttdoc">Flag to set if the next point is the second fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:391</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a46155f87e57c0168fb14b220aeb8eb7a"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">pcl::GreedyProjectionTriangulation::proj_qp_</a></div><div class="ttdeci">Eigen::Vector3f proj_qp_</div><div class="ttdoc">Point coordinates projected onto the plane defined by the point normal</div><div class="ttdef"><b>Definition:</b> gp3.h:405</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a5830d71072543c1f666111655a4bc480"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">pcl::GreedyProjectionTriangulation::is_current_free_</a></div><div class="ttdeci">bool is_current_free_</div><div class="ttdoc">Flag to set if the current point is free</div><div class="ttdef"><b>Definition:</b> gp3.h:381</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a5c179811fc6ebc53a4d24563522e03f0"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">pcl::GreedyProjectionTriangulation::next_is_ffn_</a></div><div class="ttdeci">bool next_is_ffn_</div><div class="ttdoc">Flag to set if the next point is the first fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:389</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a5da9205841893104882fcaafbd4096c3"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">pcl::GreedyProjectionTriangulation::prev_is_sfn_</a></div><div class="ttdeci">bool prev_is_sfn_</div><div class="ttdoc">Flag to set if the next point is the second fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:387</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a723115bfb8776de196203255e23f44e7"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">pcl::GreedyProjectionTriangulation::u_</a></div><div class="ttdeci">Eigen::Vector3f u_</div><div class="ttdoc">First coordinate vector of the 2D coordinate frame</div><div class="ttdef"><b>Definition:</b> gp3.h:407</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a7c4b4164e698154a490150c33b591c3d"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a7c4b4164e698154a490150c33b591c3d">pcl::GreedyProjectionTriangulation::uvn_next_ffn_</a></div><div class="ttdeci">Eigen::Vector2f uvn_next_ffn_</div><div class="ttdoc">2D coordinates of the first fringe neighbor of the next point</div><div class="ttdef"><b>Definition:</b> gp3.h:415</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a8ece82543e25daefde381b3b77f0c648"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a8ece82543e25daefde381b3b77f0c648">pcl::GreedyProjectionTriangulation::uvn_sfn_</a></div><div class="ttdeci">Eigen::Vector2f uvn_sfn_</div><div class="ttdoc">2D coordinates of the second fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:413</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ab7ba0ba379a2918bf94c5bd062044bed"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">pcl::GreedyProjectionTriangulation::prev_is_ffn_</a></div><div class="ttdeci">bool prev_is_ffn_</div><div class="ttdoc">Flag to set if the previous point is the first fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:385</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_abdb42b5afc8cd3584245389e068ee33c"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">pcl::GreedyProjectionTriangulation::v_</a></div><div class="ttdeci">Eigen::Vector3f v_</div><div class="ttdoc">Second coordinate vector of the 2D coordinate frame</div><div class="ttdef"><b>Definition:</b> gp3.h:409</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ac003ea254cfc614873d41e7e1bd7b5f5"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">pcl::GreedyProjectionTriangulation::coords_</a></div><div class="ttdeci">std::vector&lt; Eigen::Vector3f, Eigen::aligned_allocator&lt; Eigen::Vector3f &gt; &gt; coords_</div><div class="ttdoc">Temporary variable to store point coordinates</div><div class="ttdef"><b>Definition:</b> gp3.h:361</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ad06f641e4be9393dd7db3e67f0dd06f3"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ad06f641e4be9393dd7db3e67f0dd06f3">pcl::GreedyProjectionTriangulation::uvn_next_sfn_</a></div><div class="ttdeci">Eigen::Vector2f uvn_next_sfn_</div><div class="ttdoc">2D coordinates of the second fringe neighbor of the next point</div><div class="ttdef"><b>Definition:</b> gp3.h:417</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ad213212e4a517118fc9594c71106c52d"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ad213212e4a517118fc9594c71106c52d">pcl::GreedyProjectionTriangulation::uvn_ffn_</a></div><div class="ttdeci">Eigen::Vector2f uvn_ffn_</div><div class="ttdoc">2D coordinates of the first fringe neighbor</div><div class="ttdef"><b>Definition:</b> gp3.h:411</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_af4a2217e64683fd167457c082ebb634b"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">pcl::GreedyProjectionTriangulation::already_connected_</a></div><div class="ttdeci">bool already_connected_</div><div class="ttdoc">Flag to set if the next neighbor was already connected in the previous step. To avoid inconsistency i...</div><div class="ttdef"><b>Definition:</b> gp3.h:402</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9b41ae0e079546da1e47c1e552a50956"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b41ae0e079546da1e47c1e552a50956">&#9670;&nbsp;</a></span>getPartIDs()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::getPartIDs </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the ID of each point after reconstruction. </p>
<dl class="section note"><dt>注解</dt><dd>parts are numbered from 0, a -1 denotes unconnected points </dd></dl>
<div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>); }</div>
</div><!-- fragment -->
</div>
</div>
<a id="af46f8ebd7cd862c3e35d35d9155e602f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af46f8ebd7cd862c3e35d35d9155e602f">&#9670;&nbsp;</a></span>getPointStates()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::getPointStates </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the state of each point after reconstruction. </p>
<dl class="section note"><dt>注解</dt><dd>Options are defined as constants: FREE, FRINGE, COMPLETED, BOUNDARY and NONE </dd></dl>
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>); }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1a78e2bed009eb6d84e55126694b65d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a78e2bed009eb6d84e55126694b65d8">&#9670;&nbsp;</a></span>getTriangleList()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::vector&lt; size_t &gt; &gt; <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::getTriangleList </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the list of containing triangles for each vertex in a <a class="el" href="structpcl_1_1_polygon_mesh.html">PolygonMesh</a> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">polygonMesh</td><td>the input polygon mesh </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;{</div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;  std::vector&lt;std::vector&lt;size_t&gt; &gt; triangleList (input.cloud.width * input.cloud.height);</div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; </div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i &lt; input.polygons.size (); ++i)</div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j=0; j &lt; input.polygons[i].vertices.size (); ++j)</div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;      triangleList[input.polygons[i].vertices[j]].push_back (i);</div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;  <span class="keywordflow">return</span> (triangleList);</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a55efc2cd5afd039a46cf47fc9f011c31"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55efc2cd5afd039a46cf47fc9f011c31">&#9670;&nbsp;</a></span>nnAngleSortAsc()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static bool <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::nnAngleSortAsc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a> &amp;&#160;</td>
          <td class="paramname"><em>a1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html">nnAngle</a> &amp;&#160;</td>
          <td class="paramname"><em>a2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Function for ascending sort of <a class="el" href="structpcl_1_1_greedy_projection_triangulation_1_1nn_angle.html" title="Struct for storing the angles to nearest neighbors">nnAngle</a>, taking visibility into account (angles to visible neighbors will be first, to the invisible ones after). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">a1</td><td>the first angle </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">a2</td><td>the second angle </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;      {</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        <span class="keywordflow">if</span> (a1.visible == a2.visible)</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;          <span class="keywordflow">return</span> (a1.angle &lt; a2.angle);</div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;          <span class="keywordflow">return</span> a1.visible;</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1817076ff2985e5b5203b506bf25a979"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1817076ff2985e5b5203b506bf25a979">&#9670;&nbsp;</a></span>performReconstruction() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::performReconstruction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The actual surface reconstruction method. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the resultant polygonal mesh </td></tr>
  </table>
  </dd>
</dl>
<p>NOTE: usually the number of triangles is around twice the number of vertices</p>

<p>实现了 <a class="el" href="classpcl_1_1_mesh_construction.html#aa8fcdad3f757ca304a9776f88510fb83">pcl::MeshConstruction&lt; PointInT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  output.polygons.clear ();</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  output.polygons.reserve (2 * <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ()); </div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a79446bbf7aa1f11d452fa66e96f512de">reconstructPolygons</a> (output.polygons))</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  {</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::performReconstruction] Reconstruction failed. Check parameters: search radius (%f) or mu (%f) before continuing.\n&quot;</span>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6aa25479123d362fb33682f3dbc3e9fa">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a>);</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    output.cloud.width = output.cloud.height = 0;</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    output.cloud.data.clear ();</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  }</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a6aa25479123d362fb33682f3dbc3e9fa"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a6aa25479123d362fb33682f3dbc3e9fa">pcl::GreedyProjectionTriangulation::getClassName</a></div><div class="ttdeci">std::string getClassName() const</div><div class="ttdoc">Class get name method.</div><div class="ttdef"><b>Definition:</b> gp3.h:442</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a6c14f79538439d238fdc95bc4a508f8b"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">pcl::GreedyProjectionTriangulation::mu_</a></div><div class="ttdeci">double mu_</div><div class="ttdoc">The nearest neighbor distance multiplier to obtain the final search radius.</div><div class="ttdef"><b>Definition:</b> gp3.h:314</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a7473d8f0ae4d2f96b6b0eb45d502e99a"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">pcl::GreedyProjectionTriangulation::search_radius_</a></div><div class="ttdeci">double search_radius_</div><div class="ttdoc">The nearest neighbors search radius for each point and the maximum edge length.</div><div class="ttdef"><b>Definition:</b> gp3.h:317</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a79446bbf7aa1f11d452fa66e96f512de"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a79446bbf7aa1f11d452fa66e96f512de">pcl::GreedyProjectionTriangulation::reconstructPolygons</a></div><div class="ttdeci">bool reconstructPolygons(std::vector&lt; pcl::Vertices &gt; &amp;polygons)</div><div class="ttdoc">The actual surface reconstruction method.</div><div class="ttdef"><b>Definition:</b> gp3.hpp:74</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac51ee840d66c0d94faa13b4fac6a9108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac51ee840d66c0d94faa13b4fac6a9108">&#9670;&nbsp;</a></span>performReconstruction() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::performReconstruction </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The actual surface reconstruction method. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the resultant polygons, as a set of vertices. The <a class="el" href="structpcl_1_1_vertices.html" title="Describes a set of vertices in a polygon mesh, by basically storing an array of indices.">Vertices</a> structure contains an array of point indices. </td></tr>
  </table>
  </dd>
</dl>
<p>NOTE: usually the number of triangles is around twice the number of vertices</p>

<p>实现了 <a class="el" href="classpcl_1_1_mesh_construction.html#abc10f0d821c51523876d9ff2faa12ccc">pcl::MeshConstruction&lt; PointInT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;{</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  polygons.clear ();</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  polygons.reserve (2 * <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ()); </div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a79446bbf7aa1f11d452fa66e96f512de">reconstructPolygons</a> (polygons))</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  {</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::performReconstruction] Reconstruction failed. Check parameters: search radius (%f) or mu (%f) before continuing.\n&quot;</span>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6aa25479123d362fb33682f3dbc3e9fa">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a>);</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  }</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a79446bbf7aa1f11d452fa66e96f512de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79446bbf7aa1f11d452fa66e96f512de">&#9670;&nbsp;</a></span>reconstructPolygons()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::reconstructPolygons </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The actual surface reconstruction method. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the resultant polygons, as a set of vertices. The <a class="el" href="structpcl_1_1_vertices.html" title="Describes a set of vertices in a polygon mesh, by basically storing an array of indices.">Vertices</a> structure contains an array of point indices. </td></tr>
  </table>
  </dd>
</dl>
<p>NOTE: discarding NaN points and those that are not in indices_</p>
<p>NOTE: discarding NaN points and those that are not in indices_</p>
<p>NOTE: nnIdx was reset</p>
<p>TODO: document!</p>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;{</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a> &lt;= 0 || <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a> &lt;= 0)</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  {</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    polygons.clear ();</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  }</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">double</span> sqr_mu = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a>*<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">double</span> sqr_max_edge = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a>*<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a>;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a> &gt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ()))</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a> = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">// Variables to hold the results of nearest neighbor searches</span></div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  std::vector&lt;int&gt; nnIdx (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  std::vector&lt;float&gt; sqrDists (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">// current number of connected components</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordtype">int</span> part_index = 0;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// 2D coordinates of points</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">const</span> Eigen::Vector2f uvn_nn_qp_zero = Eigen::Vector2f::Zero();</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  Eigen::Vector2f uvn_current;</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  Eigen::Vector2f uvn_prev;</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  Eigen::Vector2f uvn_next;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <span class="comment">// initializing fields</span></div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">false</span>; <span class="comment">// see declaration for comments :P</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="comment">// initializing states and fringe neighbors</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>.clear ();</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>.clear ();</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>.clear ();</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>.clear ();</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>.clear ();</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>.resize(<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (), -1); <span class="comment">// indices of point&#39;s part</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>.resize(<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (), FREE);</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>.resize(<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (), NONE);</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>.resize(<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (), NONE);</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>.resize(<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (), NONE);</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.clear ();</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keywordtype">int</span> fqIdx = 0; <span class="comment">// current fringe&#39;s index in the queue to be processed</span></div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="comment">// Avoiding NaN coordinates if needed</span></div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;is_dense)</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  {</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="comment">// Skip invalid points from the indices list</span></div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordflow">for</span> (std::vector&lt;int&gt;::const_iterator it = <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;begin (); it != <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;end (); ++it)</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      <span class="keywordflow">if</span> (!pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].x) ||</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;          !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].y) ||</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;          !pcl_isfinite (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[*it].z))</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[*it] = NONE;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  }</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">// Saving coordinates and point to index mapping</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>.clear ();</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>.reserve (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  std::vector&lt;int&gt; point2index (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points.size (), -1);</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> cp = 0; cp &lt; static_cast&lt;int&gt; (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ()); ++cp)</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  {</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>.push_back(<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[(*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[cp]].getVector3fMap());</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    point2index[(*indices_)[cp]] = cp;</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  }</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="comment">// Initializing</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="keywordtype">int</span> is_free=0, nr_parts=0, increase_nnn4fn=0, increase_nnn4s=0, increase_dist=0, nr_touched = 0;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordtype">bool</span> is_fringe;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>.resize(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  std::vector&lt;Eigen::Vector2f, Eigen::aligned_allocator&lt;Eigen::Vector2f&gt; &gt; uvn_nn (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  Eigen::Vector2f uvn_s;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// iterating through fringe points and finishing them until everything is done</span></div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="keywordflow">while</span> (is_free != NONE)</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  {</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> = is_free;</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == FREE)</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    {</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = NONE;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad218505c248a4144e56f4e40906e0644">part_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = part_index++;</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="comment">// creating starting triangle</span></div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      <span class="comment">//searchForNeighbors ((*indices_)[R_], nnIdx, sqrDists);</span></div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="comment">//tree_-&gt;nearestKSearch (input_-&gt;points[(*indices_)[R_]], nnn_, nnIdx, sqrDists);</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <a class="code" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a>-&gt;nearestKSearch (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;at (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>, nnIdx, sqrDists);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <span class="keywordtype">double</span> sqr_dist_threshold = (std::min)(sqr_max_edge, sqr_mu * sqrDists[1]);</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="comment">// Search tree returns indices into the original cloud, but we are working with indices. TODO: make that optional!</span></div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      {</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="comment">//if (point2index[nnIdx[i]] == -1)</span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <span class="comment">//  std::cerr &lt;&lt; R_ &lt;&lt; &quot; [&quot; &lt;&lt; indices_-&gt;at (R_) &lt;&lt; &quot;] &quot; &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; nnIdx[i] &lt;&lt; &quot; / &quot; &lt;&lt; point2index[nnIdx[i]] &lt;&lt; std::endl;</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        nnIdx[i] = point2index[nnIdx[i]];</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      }</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      <span class="comment">// Get the normal estimate at the current point </span></div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      <span class="keyword">const</span> Eigen::Vector3f nc = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[(*indices_)[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]].getNormalVector3fMap ();</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <span class="comment">// Get a coordinate system that lies on a plane defined by its normal</span></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a> = nc.unitOrthogonal ();</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a> = nc.cross (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="comment">// Projecting point onto the surface </span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keywordtype">float</span> dist = nc.dot (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]);</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] - dist * nc;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      <span class="comment">// Converting coords, calculating angles and saving the projected near boundary edges</span></div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      <span class="keywordtype">int</span> nr_edge = 0;</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      std::vector&lt;doubleEdge&gt; doubleEdges;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++) <span class="comment">// nearest neighbor with index 0 is the query point R_ itself</span></div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;      {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="comment">// Transforming coordinates</span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[nnIdx[i]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        uvn_nn[i][0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        uvn_nn[i][1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="comment">// Computing the angle between each neighboring point and the query point itself</span></div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].angle = atan2(uvn_nn[i][1], uvn_nn[i][0]);</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="comment">// initializing angle descriptors</span></div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index = nnIdx[i];</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;            (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == COMPLETED) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == BOUNDARY)</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;            || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == NONE) || (nnIdx[i] == -1) </div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;            || (sqrDists[i] &gt; sqr_dist_threshold)</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;           )</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        <span class="comment">// Saving the edges between nearby boundary points</span></div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == FRINGE) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == BOUNDARY))</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        {</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          doubleEdge e;</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;          e.index = i;</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;          nr_edge++;</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[i]]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          e.first[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;          e.first[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[i]]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;          e.second[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;          e.second[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;          doubleEdges.push_back(e);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        }</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      }</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160; </div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="comment">// Verify the visibility of each potential new vertex </span></div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++) <span class="comment">// nearest neighbor with index 0 is the query point R_ itself</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]))</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        {</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;          <span class="keywordtype">bool</span> visibility = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; nr_edge; j++)</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;          {</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[doubleEdges[j].index]] != nnIdx[i])</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;              visibility = isVisible(uvn_nn[i], uvn_nn[doubleEdges[j].index], doubleEdges[j].first, Eigen::Vector2f::Zero());</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            <span class="keywordflow">if</span> (!visibility)</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[doubleEdges[j].index]] != nnIdx[i])</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;              visibility = isVisible(uvn_nn[i], uvn_nn[doubleEdges[j].index], doubleEdges[j].second, Eigen::Vector2f::Zero());</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;            <span class="keywordflow">if</span> (!visibility)</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;          }</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = visibility;</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        }</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <span class="comment">// Selecting first two visible free neighbors</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      <span class="keywordtype">bool</span> not_found = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      <span class="keywordtype">int</span> left = 1;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      <span class="keywordflow">do</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      {</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        <span class="keywordflow">while</span> ((left &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>) &amp;&amp; ((!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[left].visible) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[left]] &gt; FREE))) left++;</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <span class="keywordflow">if</span> (left &gt;= <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>)</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        {</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;          <span class="keywordtype">int</span> right = left+1;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;          <span class="keywordflow">do</span></div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;          {</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;            <span class="keywordflow">while</span> ((right &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>) &amp;&amp; ((!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[right].visible) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[right]] &gt; FREE))) right++;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            <span class="keywordflow">if</span> (right &gt;= <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>)</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[nnIdx[left]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[nnIdx[right]]).squaredNorm () &gt; sqr_max_edge)</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;              right++;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;            {</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (nnIdx[right], <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (nnIdx[left], nnIdx[right]);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, nnIdx[left]);</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[left]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[right]] = FRINGE;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = nnIdx[left];</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = nnIdx[right];</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[left]] = nnIdx[right];</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[left]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>;</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[right]] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>;</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[right]] = nnIdx[left];</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, nnIdx[left], nnIdx[right], polygons);</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;              nr_parts++;</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;              not_found = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;            }</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;          }</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;          <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;          left++;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;        }</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      }</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;      <span class="keywordflow">while</span> (not_found);</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    }</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160; </div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    is_free = NONE;</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> temp = 0; temp &lt; <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (); temp++)</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    {</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[temp] == FREE)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;      {</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        is_free = temp;</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      }</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    is_fringe = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keywordflow">while</span> (is_fringe)</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    {</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      is_fringe = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      <span class="keywordtype">int</span> fqSize = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.size ());</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      <span class="keywordflow">while</span> ((fqIdx &lt; fqSize) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>[fqIdx]] != FRINGE))</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        fqIdx++;</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      <span class="comment">// an unfinished fringe point is found</span></div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      <span class="keywordflow">if</span> (fqIdx &gt;= fqSize)</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      {</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      }</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>[fqIdx];</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      is_fringe = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160; </div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>])</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      {</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = COMPLETED;</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;      }</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;      <span class="comment">//searchForNeighbors ((*indices_)[R_], nnIdx, sqrDists);</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <span class="comment">//tree_-&gt;nearestKSearch (input_-&gt;points[(*indices_)[R_]], nnn_, nnIdx, sqrDists);</span></div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;      <a class="code" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a>-&gt;nearestKSearch (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;at (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>, nnIdx, sqrDists);</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160; </div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="comment">// Search tree returns indices into the original cloud, but we are working with indices TODO: make that optional!</span></div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;      {</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        <span class="comment">//if (point2index[nnIdx[i]] == -1)</span></div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="comment">//  std::cerr &lt;&lt; R_ &lt;&lt; &quot; [&quot; &lt;&lt; indices_-&gt;at (R_) &lt;&lt; &quot;] &quot; &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; nnIdx[i] &lt;&lt; &quot; / &quot; &lt;&lt; point2index[nnIdx[i]] &lt;&lt; std::endl;</span></div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        nnIdx[i] = point2index[nnIdx[i]];</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;      }</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;      <span class="comment">// Locating FFN and SFN to adapt distance threshold</span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;      <span class="keywordtype">double</span> sqr_source_dist = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]]).squaredNorm ();</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;      <span class="keywordtype">double</span> sqr_ffn_dist = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]]).squaredNorm ();</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      <span class="keywordtype">double</span> sqr_sfn_dist = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]]).squaredNorm ();</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;      <span class="keywordtype">double</span> max_sqr_fn_dist = (std::max)(sqr_ffn_dist, sqr_sfn_dist);</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;      <span class="keywordtype">double</span> sqr_dist_threshold = (std::min)(sqr_max_edge, sqr_mu * sqrDists[1]); <span class="comment">//sqr_mu * sqr_avg_conn_dist);</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;      <span class="keywordflow">if</span> (max_sqr_fn_dist &gt; sqrDists[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>-1])</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;      {</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        <span class="keywordflow">if</span> (0 == increase_nnn4fn)</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;          PCL_WARN(<span class="stringliteral">&quot;Not enough neighbors are considered: ffn or sfn out of range! Consider increasing nnn_... Setting R=%d to be BOUNDARY!\n&quot;</span>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        increase_nnn4fn++;</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      }</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;      <span class="keywordtype">double</span> max_sqr_fns_dist = (std::max)(sqr_source_dist, max_sqr_fn_dist);</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      <span class="keywordflow">if</span> (max_sqr_fns_dist &gt; sqrDists[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>-1])</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;      {</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">if</span> (0 == increase_nnn4s)</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;          PCL_WARN(<span class="stringliteral">&quot;Not enough neighbors are considered: source of R=%d is out of range! Consider increasing nnn_...\n&quot;</span>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        increase_nnn4s++;</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      }</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160; </div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="comment">// Get the normal estimate at the current point </span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;      <span class="keyword">const</span> Eigen::Vector3f nc = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[(*indices_)[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]].getNormalVector3fMap ();</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160; </div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      <span class="comment">// Get a coordinate system that lies on a plane defined by its normal</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a> = nc.unitOrthogonal ();</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a> = nc.cross (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;      <span class="comment">// Projecting point onto the surface</span></div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;      <span class="keywordtype">float</span> dist = nc.dot (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]);</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] - dist * nc;</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      <span class="comment">// Converting coords, calculating angles and saving the projected near boundary edges</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;      <span class="keywordtype">int</span> nr_edge = 0;</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      std::vector&lt;doubleEdge&gt; doubleEdges;</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++) <span class="comment">// nearest neighbor with index 0 is the query point R_ itself</span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      {</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[nnIdx[i]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        uvn_nn[i][0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        uvn_nn[i][1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  </div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        <span class="comment">// Computing the angle between each neighboring point and the query point itself </span></div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].angle = atan2(uvn_nn[i][1], uvn_nn[i][0]);</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="comment">// initializing angle descriptors</span></div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index = nnIdx[i];</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].nnIndex = i;</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;            (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == COMPLETED) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == BOUNDARY)</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;            || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == NONE) || (nnIdx[i] == -1) </div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;            || (sqrDists[i] &gt; sqr_dist_threshold)</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;           )</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == nnIdx[i]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == nnIdx[i]))</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <span class="keywordtype">bool</span> same_side = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        <span class="keyword">const</span> Eigen::Vector3f neighbor_normal = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[(*indices_)[nnIdx[i]]].getNormalVector3fMap (); </div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        <span class="keywordtype">double</span> cosine = nc.dot (neighbor_normal);</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <span class="keywordflow">if</span> (cosine &gt; 1) cosine = 1;</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <span class="keywordflow">if</span> (cosine &lt; -1) cosine = -1;</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordtype">double</span> angle = acos (cosine);</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keywordflow">if</span> ((!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8d230c0cd46619352ee921315e576677">consistent_</a>) &amp;&amp; (angle &gt; M_PI/2))</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;          angle = M_PI - angle;</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        <span class="keywordflow">if</span> (angle &gt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0720b49d49abca1bd7c9504666ddaf35">eps_angle_</a>)</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        {</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;          same_side = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        }</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        <span class="comment">// Saving the edges between nearby boundary points </span></div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        <span class="keywordflow">if</span> ((i!=0) &amp;&amp; (same_side) &amp;&amp; ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == FRINGE) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == BOUNDARY)))</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        {</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;          doubleEdge e;</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;          e.index = i;</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;          nr_edge++;</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[i]]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;          e.first[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;          e.first[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[i]]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;          e.second[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;          e.second[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;          doubleEdges.push_back(e);</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;          <span class="comment">// Pruning by visibility criterion </span></div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;          <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == FRINGE) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]))</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;          {</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;            <span class="keywordtype">double</span> angle1 = atan2(e.first[1] - uvn_nn[i][1], e.first[0] - uvn_nn[i][0]);</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;            <span class="keywordtype">double</span> angle2 = atan2(e.second[1] - uvn_nn[i][1], e.second[0] - uvn_nn[i][0]);</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;            <span class="keywordtype">double</span> angleMin, angleMax;</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;            <span class="keywordflow">if</span> (angle1 &lt; angle2)</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;            {</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;              angleMin = angle1;</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;              angleMax = angle2;</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;            }</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;            {</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;              angleMin = angle2;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;              angleMax = angle1;</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            }</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;            <span class="keywordtype">double</span> angleR = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].angle + M_PI;</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;            <span class="keywordflow">if</span> (angleR &gt;= M_PI)</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;              angleR -= 2*M_PI;</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[nnIdx[i]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[i]]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[nnIdx[i]] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[i]]))</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;            {</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;              <span class="keywordflow">if</span> ((angleMax - angleMin) &lt; M_PI)</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;              {</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                <span class="keywordflow">if</span> ((angleMin &lt; angleR) &amp;&amp; (angleR &lt; angleMax))</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;              }</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;              {</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                <span class="keywordflow">if</span> ((angleR &lt; angleMin) || (angleMax &lt; angleR))</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;              }</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;            }</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;            {</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[nnIdx[i]]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;              uvn_s[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;              uvn_s[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;              <span class="keywordtype">double</span> angleS = atan2(uvn_s[1] - uvn_nn[i][1], uvn_s[0] - uvn_nn[i][0]);</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;              <span class="keywordflow">if</span> ((angleMin &lt; angleS) &amp;&amp; (angleS &lt; angleMax))</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;              {</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                <span class="keywordflow">if</span> ((angleMin &lt; angleR) &amp;&amp; (angleR &lt; angleMax))</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;              }</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;              {</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                <span class="keywordflow">if</span> ((angleR &lt; angleMin) || (angleMax &lt; angleR))</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;              }</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;            }</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;          }</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        }</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;      }</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].visible = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; </div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;      <span class="comment">// Verify the visibility of each potential new vertex</span></div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++) <span class="comment">// nearest neighbor with index 0 is the query point R_ itself</span></div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] != nnIdx[i]))</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        {</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;          <span class="keywordtype">bool</span> visibility = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; nr_edge; j++)</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;          {</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;            <span class="keywordflow">if</span> (doubleEdges[j].index != i)</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;            {</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;              <span class="keywordtype">int</span> f = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[nnIdx[doubleEdges[j].index]];</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;              <span class="keywordflow">if</span> ((f != nnIdx[i]) &amp;&amp; (f != <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>))</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                visibility = isVisible(uvn_nn[i], uvn_nn[doubleEdges[j].index], doubleEdges[j].first, Eigen::Vector2f::Zero());</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;              <span class="keywordflow">if</span> (visibility == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;              <span class="keywordtype">int</span> s = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[nnIdx[doubleEdges[j].index]];</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;              <span class="keywordflow">if</span> ((s != nnIdx[i]) &amp;&amp; (s != <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>))</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                visibility = isVisible(uvn_nn[i], uvn_nn[doubleEdges[j].index], doubleEdges[j].second, Eigen::Vector2f::Zero());</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;              <span class="keywordflow">if</span> (visibility == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;            }</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;          }</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].visible = visibility;</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        }</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;      <span class="comment">// Sorting angles</span></div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;      std::sort (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>.begin (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>.end (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a55efc2cd5afd039a46cf47fc9f011c31">GreedyProjectionTriangulation&lt;PointInT&gt;::nnAngleSortAsc</a>);</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;      <span class="comment">// Triangulating</span></div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[2].visible == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;      {</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keywordflow">if</span> ( !( (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] &amp;&amp; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] &amp;&amp; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]) ) )</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        {</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        }</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        {</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;          <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].index) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].index))</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;          {</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;            <span class="keywordflow">if</span> (sqr_max_edge &lt; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]]).squaredNorm ())</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;            {</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;            }</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;            {</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;              uvn_s[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;              uvn_s[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;              <span class="keywordtype">double</span> angleS = atan2(uvn_s[1], uvn_s[0]);</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;              <span class="keywordtype">double</span> dif = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].angle;</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;              <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].angle &lt; angleS) &amp;&amp; (angleS &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[1].angle))</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;              {</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                <span class="keywordflow">if</span> (dif &lt; 2*M_PI - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a>)</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a9c944c84cd512f7446e32477aa901ef2">closeTriangle</a> (polygons);</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;              }</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;              {</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;                <span class="keywordflow">if</span> (dif &gt;= <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a>)</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;                  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a9c944c84cd512f7446e32477aa901ef2">closeTriangle</a> (polygons);</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;              }</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;            }</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;          }</div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        }</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      }</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; </div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;      <span class="comment">// Finding the FFN and SFN</span></div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;      <span class="keywordtype">int</span> start = -1, end = -1;</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;      {</div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;        {</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;          start = i;</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i+1].index)</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;            end = i+1;</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;            <span class="keywordflow">if</span> (i==0)</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;            {</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;              <span class="keywordflow">for</span> (i = i+2; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;              end = i;</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;            }</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;            {</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;              <span class="keywordflow">for</span> (i = i+2; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;              end = i;</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;            }</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;        }</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        {</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;          start = i;</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i+1].index)</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;            end = i+1;</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;            <span class="keywordflow">if</span> (i==0)</div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;            {</div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;              <span class="keywordflow">for</span> (i = i+2; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;              end = i;</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;            }</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;            {</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;              <span class="keywordflow">for</span> (i = i+2; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index)</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;              end = i;</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;            }</div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        }</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;      }</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160; </div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;      <span class="comment">// start and end are always set, as we checked if ffn or sfn are out of range before, but let&#39;s check anyways if &lt; 0</span></div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;      <span class="keywordflow">if</span> ((start &lt; 0) || (end &lt; 0) || (end == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>) || (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].visible) || (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].visible))</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;      {</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = BOUNDARY;</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;      }</div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160; </div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;      <span class="comment">// Finding last visible nn </span></div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;      <span class="keywordtype">int</span> last_visible = end;</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;      <span class="keywordflow">while</span> ((last_visible+1&lt;<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[last_visible+1].visible)) last_visible++;</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160; </div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;      <span class="comment">// Finding visibility region of R</span></div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;      <span class="keywordtype">bool</span> need_invert = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;      <span class="keywordtype">int</span> sourceIdx = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>;</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;      <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>]))</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      {</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].angle) &lt; M_PI)</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;          need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      }</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;      {</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        <span class="keywordflow">for</span> (sourceIdx=0; sourceIdx&lt;<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; sourceIdx++)</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[sourceIdx].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af35e77a56a050ddd404ff853a94a31c2">source_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>])</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;        <span class="keywordflow">if</span> (sourceIdx == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>)</div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;        {</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;          <span class="keywordtype">int</span> vis_free = NONE, nnCB = NONE; <span class="comment">// any free visible and nearest completed or boundary neighbor of R</span></div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++) <span class="comment">// nearest neighbor with index 0 is the query point R_ itself</span></div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;          {</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;            <span class="comment">// NOTE: nnCB is an index in nnIdx</span></div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == COMPLETED) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[nnIdx[i]] == BOUNDARY))</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;            {</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;              <span class="keywordflow">if</span> (nnCB == NONE)</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;              {</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                nnCB = i;</div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                <span class="keywordflow">if</span> (vis_free != NONE)</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;              }</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;            }</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;            <span class="comment">// NOTE: vis_free is an index in angles</span></div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index] &lt;= FREE)</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;            {</div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;              <span class="keywordflow">if</span> (i &lt;= last_visible)</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;              {</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                vis_free = i;</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                <span class="keywordflow">if</span> (nnCB != NONE)</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;              }</div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;            }</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;          }</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;          <span class="comment">// NOTE: nCB is an index in angles</span></div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;          <span class="keywordtype">int</span> nCB = 0;</div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;          <span class="keywordflow">if</span> (nnCB != NONE)</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;            <span class="keywordflow">while</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[nCB].index != nnIdx[nnCB]) nCB++;</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;            nCB = NONE;</div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160; </div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;          <span class="keywordflow">if</span> (vis_free != NONE)</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;          {</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;            <span class="keywordflow">if</span> ((vis_free &lt; start) || (vis_free &gt; end))</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;              need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;          }</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;          {</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;            <span class="keywordflow">if</span> (nCB != NONE)</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            {</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;              <span class="keywordflow">if</span> ((nCB == start) || (nCB == end))</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;              {</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                <span class="keywordtype">bool</span> inside_CB = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                <span class="keywordtype">bool</span> outside_CB = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>; i++)</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;                {</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                  <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                      ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index] == COMPLETED) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].index] == BOUNDARY))</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;                      &amp;&amp; (i != start) &amp;&amp; (i != end)</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;                     )</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;                    {</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;                      <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].angle &lt;= <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].angle) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[i].angle &lt;= <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].angle))</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                      {</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;                        inside_CB = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;                        <span class="keywordflow">if</span> (outside_CB)</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;                          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                      }</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;                      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;                      {</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;                        outside_CB = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;                        <span class="keywordflow">if</span> (inside_CB)</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;                          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;                      }</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;                    }</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;                }</div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;                <span class="keywordflow">if</span> (inside_CB &amp;&amp; !outside_CB)</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;                  need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(!inside_CB &amp;&amp; outside_CB))</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                {</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                  <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].angle) &lt; M_PI)</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;                    need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                }</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;              }</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;              {</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[nCB].angle &gt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].angle) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[nCB].angle &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].angle))</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                  need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;              }</div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;            }</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;            {</div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;              <span class="keywordflow">if</span> (start == end-1)</div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;            }</div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;          }</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        }</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[start].angle &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[sourceIdx].angle) &amp;&amp; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[sourceIdx].angle &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[end].angle))</div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;          need_invert = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;      }</div>
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; </div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;      <span class="comment">// switching start and end if necessary</span></div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;      <span class="keywordflow">if</span> (need_invert)</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;      {</div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;        <span class="keywordtype">int</span> tmp = start;</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;        start = end;</div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;        end = tmp;</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;      }</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; </div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;      <span class="comment">// Arranging visible nnAngles in the order they need to be connected and</span></div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;      <span class="comment">// compute the maximal angle difference between two consecutive visible angles</span></div>
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      <span class="keywordtype">bool</span> is_boundary = <span class="keyword">false</span>, is_skinny = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      std::vector&lt;bool&gt; gaps (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;      std::vector&lt;bool&gt; skinny (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;      std::vector&lt;double&gt; dif (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;      std::vector&lt;int&gt; angleIdx; angleIdx.reserve (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a>);</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;      <span class="keywordflow">if</span> (start &gt; end)</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;      {</div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=start; j&lt;last_visible; j++)</div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;        {</div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;          dif[j] = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].angle);</div>
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;          <span class="keywordflow">if</span> (dif[j] &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a>)</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;          {</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;            skinny[j] = is_skinny = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;          }</div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;          <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a> &lt;= dif[j])</div>
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;          {</div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;          }</div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;          <span class="keywordflow">if</span> ((!gaps[j]) &amp;&amp; (sqr_max_edge &lt; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].index]).squaredNorm ()))</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;          {</div>
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;          }</div>
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;          angleIdx.push_back(j);</div>
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;        }</div>
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160; </div>
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        dif[last_visible] = (2*M_PI + <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[last_visible].angle);</div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        <span class="keywordflow">if</span> (dif[last_visible] &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a>)</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        {</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;          skinny[last_visible] = is_skinny = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;        }</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a> &lt;= dif[last_visible])</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;        {</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;          gaps[last_visible] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        }</div>
<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;        <span class="keywordflow">if</span> ((!gaps[last_visible]) &amp;&amp; (sqr_max_edge &lt; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[0].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[last_visible].index]).squaredNorm ()))</div>
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;        {</div>
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;          gaps[last_visible] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;        }</div>
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        angleIdx.push_back(last_visible);</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160; </div>
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;end; j++)</div>
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;        {</div>
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;          dif[j] = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].angle);</div>
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;          <span class="keywordflow">if</span> (dif[j] &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a>)</div>
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;          {</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;            skinny[j] = is_skinny = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;          }</div>
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;          <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a> &lt;= dif[j])</div>
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;          {</div>
<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;          }</div>
<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;          <span class="keywordflow">if</span> ((!gaps[j]) &amp;&amp; (sqr_max_edge &lt; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].index]).squaredNorm ()))</div>
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;          {</div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;          }</div>
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;          angleIdx.push_back(j);</div>
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        }</div>
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;        angleIdx.push_back(end);</div>
<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;      }</div>
<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;      <span class="comment">// start &lt; end</span></div>
<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;      {</div>
<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=start; j&lt;end; j++)</div>
<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;        {</div>
<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;          dif[j] = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].angle - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].angle);</div>
<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;          <span class="keywordflow">if</span> (dif[j] &lt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a>)</div>
<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;          {</div>
<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;            skinny[j] = is_skinny = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;          }</div>
<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;          <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a> &lt;= dif[j])</div>
<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;          {</div>
<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;          }</div>
<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;          <span class="keywordflow">if</span> ((!gaps[j]) &amp;&amp; (sqr_max_edge &lt; (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j+1].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[j].index]).squaredNorm ()))</div>
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;          {</div>
<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;            gaps[j] = is_boundary = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;          }</div>
<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;          angleIdx.push_back(j);</div>
<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;        }</div>
<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;        angleIdx.push_back(end);</div>
<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;      }</div>
<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160; </div>
<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;      <span class="comment">// Set the state of the point</span></div>
<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = is_boundary ? BOUNDARY : COMPLETED;</div>
<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160; </div>
<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;      std::vector&lt;int&gt;::iterator first_gap_after = angleIdx.end ();</div>
<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;      std::vector&lt;int&gt;::iterator last_gap_before = angleIdx.begin ();</div>
<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;      <span class="keywordtype">int</span> nr_gaps = 0;</div>
<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;      <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator it = angleIdx.begin (); it != angleIdx.end () - 1; it++)</div>
<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;      {</div>
<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;        <span class="keywordflow">if</span> (gaps[*it])</div>
<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;        {</div>
<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;          nr_gaps++;</div>
<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;          <span class="keywordflow">if</span> (first_gap_after == angleIdx.end())</div>
<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;            first_gap_after = it;</div>
<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;          last_gap_before = it+1;</div>
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;        }</div>
<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;      }</div>
<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;      <span class="keywordflow">if</span> (nr_gaps &gt; 1)</div>
<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;      {</div>
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;        angleIdx.erase(first_gap_after+1, last_gap_before);</div>
<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;      }</div>
<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160; </div>
<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;      <span class="comment">// Neglecting points that would form skinny triangles (if possible)</span></div>
<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;      <span class="keywordflow">if</span> (is_skinny)</div>
<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;      {</div>
<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;        <span class="keywordtype">double</span> angle_so_far = 0, angle_would_be;</div>
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;        <span class="keywordtype">double</span> max_combined_angle = (std::min)(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a>, M_PI-2*<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a>);</div>
<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        Eigen::Vector2f X;</div>
<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;        Eigen::Vector2f S1;</div>
<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;        Eigen::Vector2f S2;</div>
<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        std::vector&lt;int&gt; to_erase;</div>
<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;        <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator it = angleIdx.begin()+1; it != angleIdx.end()-1; it++)</div>
<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;        {</div>
<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;          <span class="keywordflow">if</span> (gaps[*(it-1)])</div>
<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;            angle_so_far = 0;</div>
<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;            angle_so_far += dif[*(it-1)];</div>
<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;          <span class="keywordflow">if</span> (gaps[*it])</div>
<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;            angle_would_be = angle_so_far;</div>
<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;            angle_would_be = angle_so_far + dif[*it];</div>
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;          <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;              (skinny[*it] || skinny[*(it-1)]) &amp;&amp;</div>
<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;              ((<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].index] &lt;= FREE) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index] &lt;= FREE)) &amp;&amp;</div>
<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;              ((!gaps[*it]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].nnIndex &gt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].nnIndex)) &amp;&amp;</div>
<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;              ((!gaps[*(it-1)]) || (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].nnIndex &gt; <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].nnIndex)) &amp;&amp;</div>
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;              (angle_would_be &lt; max_combined_angle)</div>
<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;             )</div>
<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;          {</div>
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;            <span class="keywordflow">if</span> (gaps[*(it-1)])</div>
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;            {</div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;              gaps[*it] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;              to_erase.push_back(*it);</div>
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;            }</div>
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (gaps[*it])</div>
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;            {</div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;              gaps[*(it-1)] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;              to_erase.push_back(*it);</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;            }</div>
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;            {</div>
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;              std::vector&lt;int&gt;::iterator prev_it;</div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;              <span class="keywordtype">int</span> erased_idx = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (to_erase.size ()) -1;</div>
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;              <span class="keywordflow">for</span> (prev_it = it-1; (erased_idx != -1) &amp;&amp; (it != angleIdx.begin()); it--)</div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;                <span class="keywordflow">if</span> (*it == to_erase[erased_idx])</div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;                  erased_idx--;</div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;              <span class="keywordtype">bool</span> can_delete = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;              <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator curr_it = prev_it+1; curr_it != it+1; curr_it++)</div>
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;              {</div>
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*curr_it].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;                X[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;                X[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*prev_it].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;                S1[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;                S1[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;                <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac003ea254cfc614873d41e7e1bd7b5f5">coords_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index] - <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a46155f87e57c0168fb14b220aeb8eb7a">proj_qp_</a>;</div>
<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;                S2[0] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a723115bfb8776de196203255e23f44e7">u_</a>);</div>
<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;                S2[1] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2da87f24f3c7bfbde2171264e94eb3c9">tmp_</a>.dot(<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#abdb42b5afc8cd3584245389e068ee33c">v_</a>);</div>
<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;                <span class="comment">// check for inclusions </span></div>
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;                <span class="keywordflow">if</span> (isVisible(X,S1,S2))</div>
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                {</div>
<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;                  can_delete = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;                  angle_so_far = 0;</div>
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;                  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;                }</div>
<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;              }</div>
<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;              <span class="keywordflow">if</span> (can_delete)</div>
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;              {</div>
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;                to_erase.push_back(*it);</div>
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;              }</div>
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;            }</div>
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;          }</div>
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;            angle_so_far = 0;</div>
<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        }</div>
<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;        <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator it = to_erase.begin(); it != to_erase.end(); it++)</div>
<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        {</div>
<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;          <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator iter = angleIdx.begin(); iter != angleIdx.end(); iter++)</div>
<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;            <span class="keywordflow">if</span> (*it == *iter)</div>
<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;            {</div>
<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;              angleIdx.erase(iter);</div>
<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;            }</div>
<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;        }</div>
<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;      }</div>
<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160; </div>
<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;      <span class="comment">// Writing edges and updating edge-front </span></div>
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0b7648577d92c64be0c4f6da0222c05f">changed_1st_fn_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a035545d65f932f6a41195257ddf26a04">changed_2nd_fn_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;      <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = NONE;</div>
<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;      <span class="keywordflow">for</span> (std::vector&lt;int&gt;::iterator it = angleIdx.begin()+1; it != angleIdx.end()-1; it++)</div>
<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;      {</div>
<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].index;</div>
<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160; </div>
<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">is_current_free_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] &lt;= FREE)</div>
<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        {</div>
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = FRINGE;</div>
<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">is_current_free_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        }</div>
<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a>)</div>
<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;        {</div>
<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a> = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index) &amp;&amp; (!gaps[*(it-1)]);</div>
<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a> = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index) &amp;&amp; (!gaps[*(it-1)]);</div>
<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a> = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index) &amp;&amp; (!gaps[*it]);</div>
<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;          <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a> = (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index) &amp;&amp; (!gaps[*it]);</div>
<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;          <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ab7ba0ba379a2918bf94c5bd062044bed">prev_is_ffn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a38fb16d51cb651d7d9b36d04e4603ef9">next_is_sfn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5da9205841893104882fcaafbd4096c3">prev_is_sfn_</a> &amp;&amp; !<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5c179811fc6ebc53a4d24563522e03f0">next_is_ffn_</a>)</div>
<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;          {</div>
<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;            nr_touched++;</div>
<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;          }</div>
<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;        }</div>
<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;                                   </div>
<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        <span class="keywordflow">if</span> (gaps[*it])</div>
<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;          <span class="keywordflow">if</span> (gaps[*(it-1)])</div>
<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;          {</div>
<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5830d71072543c1f666111655a4bc480">is_current_free_</a>)</div>
<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>] = NONE; </div>
<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;          }</div>
<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160; </div>
<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;          <span class="keywordflow">else</span> <span class="comment">// (gaps[*it]) &amp;&amp; ^(gaps[*(it-1)])</span></div>
<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;          {</div>
<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, polygons);</div>
<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;            <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a>) </div>
<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">connectPoint</a> (polygons, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>,</div>
<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;                            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index,</div>
<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;                            uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].nnIndex], uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].nnIndex], uvn_nn_qp_zero);</div>
<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;            <span class="keywordflow">else</span> <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index)</div>
<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;            {</div>
<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>;</div>
<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;            }</div>
<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index)</div>
<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;            {</div>
<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>;</div>
<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            }</div>
<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;          }</div>
<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160; </div>
<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;        <span class="keywordflow">else</span> <span class="comment">// ^(gaps[*it])</span></div>
<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;          <span class="keywordflow">if</span> (gaps[*(it-1)])</div>
<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;          {</div>
<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a> = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>;</div>
<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;            <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a>) <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">connectPoint</a> (polygons, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index,</div>
<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                                                   (it+2) == angleIdx.end() ? -1 : <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+2)].index,</div>
<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                                                   uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].nnIndex], uvn_nn_qp_zero, </div>
<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                                                   uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].nnIndex]);</div>
<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;            <span class="keywordflow">else</span> <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index)</div>
<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;            {</div>
<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>;</div>
<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;            }</div>
<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index)</div>
<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;            {</div>
<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;              <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a01a6ea44f24d383699d3a28b9eab6301">new2boundary_</a>;</div>
<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;            }</div>
<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;          }</div>
<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160; </div>
<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;          <span class="keywordflow">else</span> <span class="comment">// ^(gaps[*it]) &amp;&amp; ^(gaps[*(it-1)]) </span></div>
<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;          {</div>
<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, polygons);</div>
<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0df73076b191e49c4c2489c11cc6ca9f">current_index_</a>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;            <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a>) <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">connectPoint</a> (polygons, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].index,</div>
<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;                                                   (it+2) == angleIdx.end() ? -1 : gaps[*(it+1)] ? <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> : <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+2)].index,</div>
<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;                                                   uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*it].nnIndex], </div>
<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;                                                   uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it-1)].nnIndex], </div>
<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;                                                   uvn_nn[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(it+1)].nnIndex]);</div>
<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;            <span class="keywordflow">else</span> <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#af4a2217e64683fd167457c082ebb634b">already_connected_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;          }</div>
<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;      }</div>
<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;      </div>
<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;      <span class="comment">// Finishing up R_</span></div>
<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>])</div>
<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;      {</div>
<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>] = COMPLETED;</div>
<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;      }</div>
<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;      <span class="keywordflow">if</span> (!gaps[*(angleIdx.end()-2)])</div>
<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;      {</div>
<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5b066f0d2dbc5bb4609e328908b93983">addTriangle</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>, polygons);</div>
<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;        <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">addFringePoint</a> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a>);</div>
<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index])</div>
<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;        {</div>
<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index])</div>
<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;          {</div>
<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index] = COMPLETED;</div>
<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;          }</div>
<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;          {</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index;</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;          }</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        }</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index])</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;        {</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index])</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;          {</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index] = COMPLETED;</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;          }</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;          {</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-1)].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.end()-2)].index;</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;          }</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;        }</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;      }</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;      <span class="keywordflow">if</span> (!gaps[*(angleIdx.begin())])</div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;      {</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index])</div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;        {</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin()+1)].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index])</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;          {</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index] = COMPLETED;</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;          }</div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;          {</div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin()+1)].index;</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;          }</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;        }</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a525739030174f36fba2aac3cb107214f">R_</a> == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index])</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;        {</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin()+1)].index == <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#aeabf5d78ffb52aeb95b0923985bad52d">ffn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index])</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;          {</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a5dc683b806669f0d1070031688810108">state_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index] = COMPLETED;</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;          }</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;          {</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;            <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ad8adba23d2eac37e0bf2c29bd89ac716">sfn_</a>[<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin())].index] = <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a974c74a1659d169ccf0d0251c13e85cb">angles_</a>[*(angleIdx.begin()+1)].index;</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;          }</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;        }</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;      }</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    }</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;  }</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;  PCL_DEBUG (<span class="stringliteral">&quot;Number of triangles: %lu\n&quot;</span>, polygons.size());</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;  PCL_DEBUG (<span class="stringliteral">&quot;Number of unconnected parts: %d\n&quot;</span>, nr_parts);</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;  <span class="keywordflow">if</span> (increase_nnn4fn &gt; 0)</div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;    PCL_WARN (<span class="stringliteral">&quot;Number of neighborhood size increase requests for fringe neighbors: %d\n&quot;</span>, increase_nnn4fn);</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;  <span class="keywordflow">if</span> (increase_nnn4s &gt; 0)</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    PCL_WARN (<span class="stringliteral">&quot;Number of neighborhood size increase requests for source: %d\n&quot;</span>, increase_nnn4s);</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;  <span class="keywordflow">if</span> (increase_dist &gt; 0)</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    PCL_WARN (<span class="stringliteral">&quot;Number of automatic maximum distance increases: %d\n&quot;</span>, increase_dist);</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; </div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;  <span class="comment">// sorting and removing doubles from fringe queue </span></div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;  std::sort (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.begin (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.end ());</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;  <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.erase (std::unique (<a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.begin (), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.end ()), <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.end ());</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;  PCL_DEBUG (<span class="stringliteral">&quot;Number of processed points: %lu / %lu\n&quot;</span>, <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a34efec59cb493b0f15f9dc9fb8af4ed0">fringe_queue_</a>.size(), <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a0720b49d49abca1bd7c9504666ddaf35"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a0720b49d49abca1bd7c9504666ddaf35">pcl::GreedyProjectionTriangulation::eps_angle_</a></div><div class="ttdeci">double eps_angle_</div><div class="ttdoc">Maximum surface angle.</div><div class="ttdef"><b>Definition:</b> gp3.h:329</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a07fb25fe27e6088e942b965f77281468"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">pcl::GreedyProjectionTriangulation::maximum_angle_</a></div><div class="ttdeci">double maximum_angle_</div><div class="ttdoc">The maximum angle for the triangles.</div><div class="ttdef"><b>Definition:</b> gp3.h:326</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a2a0327acc080a2b87e3c1c7335ed4b8a"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a2a0327acc080a2b87e3c1c7335ed4b8a">pcl::GreedyProjectionTriangulation::connectPoint</a></div><div class="ttdeci">void connectPoint(std::vector&lt; pcl::Vertices &gt; &amp;polygons, const int prev_index, const int next_index, const int next_next_index, const Eigen::Vector2f &amp;uvn_current, const Eigen::Vector2f &amp;uvn_prev, const Eigen::Vector2f &amp;uvn_next)</div><div class="ttdoc">Forms a new triangle by connecting the current neighbor to the query point and the previous neighbor</div><div class="ttdef"><b>Definition:</b> gp3.hpp:1093</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a4d641fb5e6702f577c09d4c271236005"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">pcl::GreedyProjectionTriangulation::nnn_</a></div><div class="ttdeci">int nnn_</div><div class="ttdoc">The maximum number of nearest neighbors accepted by searching.</div><div class="ttdef"><b>Definition:</b> gp3.h:320</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a55efc2cd5afd039a46cf47fc9f011c31"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a55efc2cd5afd039a46cf47fc9f011c31">pcl::GreedyProjectionTriangulation::nnAngleSortAsc</a></div><div class="ttdeci">static bool nnAngleSortAsc(const nnAngle &amp;a1, const nnAngle &amp;a2)</div><div class="ttdoc">Function for ascending sort of nnAngle, taking visibility into account (angles to visible neighbors w...</div><div class="ttdef"><b>Definition:</b> gp3.h:532</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a8391a6d6413a3abf8f9d44eb472d3f13"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a8391a6d6413a3abf8f9d44eb472d3f13">pcl::GreedyProjectionTriangulation::addFringePoint</a></div><div class="ttdeci">void addFringePoint(int v, int s)</div><div class="ttdoc">Add a new vertex to the advancing edge front and set its source point</div><div class="ttdef"><b>Definition:</b> gp3.h:519</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a8d230c0cd46619352ee921315e576677"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a8d230c0cd46619352ee921315e576677">pcl::GreedyProjectionTriangulation::consistent_</a></div><div class="ttdeci">bool consistent_</div><div class="ttdoc">Set this to true if the normals of the input are consistently oriented.</div><div class="ttdef"><b>Definition:</b> gp3.h:332</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_a9c944c84cd512f7446e32477aa901ef2"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#a9c944c84cd512f7446e32477aa901ef2">pcl::GreedyProjectionTriangulation::closeTriangle</a></div><div class="ttdeci">void closeTriangle(std::vector&lt; pcl::Vertices &gt; &amp;polygons)</div><div class="ttdoc">Whenever a query point is part of a boundary loop containing 3 points, that triangle is created (call...</div><div class="ttdef"><b>Definition:</b> gp3.hpp:1060</div></div>
<div class="ttc" id="aclasspcl_1_1_greedy_projection_triangulation_html_ac3f21361341929d5e02ba92ab0ca9258"><div class="ttname"><a href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">pcl::GreedyProjectionTriangulation::minimum_angle_</a></div><div class="ttdeci">double minimum_angle_</div><div class="ttdoc">The preferred minimum angle for the triangles.</div><div class="ttdef"><b>Definition:</b> gp3.h:323</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_surface_base_html_a28d2f448602636061ef7d716e0f6e930"><div class="ttname"><a href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">pcl::PCLSurfaceBase::tree_</a></div><div class="ttdeci">KdTreePtr tree_</div><div class="ttdoc">A pointer to the spatial search object.</div><div class="ttdef"><b>Definition:</b> reconstruction.h:98</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a104e41b329a80b09a813ce5739fbbf41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a104e41b329a80b09a813ce5739fbbf41">&#9670;&nbsp;</a></span>setConsistentVertexOrdering()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setConsistentVertexOrdering </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>consistent_ordering</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the flag to order the resulting triangle vertices consistently (positive direction around normal). </p>
<dl class="section note"><dt>注解</dt><dd>Assumes consistently oriented normals (towards the viewpoint) &ndash; see setNormalConsistency () </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">consistent_ordering</td><td>set it to true if triangle vertices should be ordered consistently </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a2716f15189fc93e5d1ffe3d9e32fdca5">consistent_ordering_</a> = consistent_ordering; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="adf103aba42e0132f580a755010188481"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf103aba42e0132f580a755010188481">&#9670;&nbsp;</a></span>setMaximumAngle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setMaximumAngle </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maximum_angle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the maximum angle each triangle can have. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">maximum_angle</td><td>the maximum angle each triangle can have </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>For best results, its value should be around 120 degrees </dd></dl>
<div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a07fb25fe27e6088e942b965f77281468">maximum_angle_</a> = maximum_angle; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8c0cfbd5d9843f2414e5ff426b61e2e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c0cfbd5d9843f2414e5ff426b61e2e5">&#9670;&nbsp;</a></span>setMaximumNearestNeighbors()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setMaximumNearestNeighbors </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nnn</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the maximum number of nearest neighbors to be searched for. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">nnn</td><td>the maximum number of nearest neighbors </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a4d641fb5e6702f577c09d4c271236005">nnn_</a> = nnn; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="afcf52c4a94f453a5ec3aab1a2d4196d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcf52c4a94f453a5ec3aab1a2d4196d8">&#9670;&nbsp;</a></span>setMaximumSurfaceAngle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setMaximumSurfaceAngle </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>eps_angle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Don't consider points for triangulation if their normal deviates more than this value from the query point's normal. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">eps_angle</td><td>maximum surface angle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>As normal estimation methods usually give smooth transitions at sharp edges, this ensures correct triangulation by avoiding connecting points from one side to points from the other through forcing the use of the edge points. </dd></dl>
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a0720b49d49abca1bd7c9504666ddaf35">eps_angle_</a> = eps_angle; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac379baa93391656d84824ea5a9806b1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac379baa93391656d84824ea5a9806b1f">&#9670;&nbsp;</a></span>setMinimumAngle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setMinimumAngle </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>minimum_angle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the minimum angle each triangle should have. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">minimum_angle</td><td>the minimum angle each triangle should have </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>As this is a greedy approach, this will have to be violated from time to time </dd></dl>
<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#ac3f21361341929d5e02ba92ab0ca9258">minimum_angle_</a> = minimum_angle; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aeaef2c77774b0cc22b1b4fd0189f8042"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeaef2c77774b0cc22b1b4fd0189f8042">&#9670;&nbsp;</a></span>setMu()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setMu </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>mu</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the multiplier of the nearest neighbor distance to obtain the final search radius for each point (this will make the algorithm adapt to different point densities in the cloud). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mu</td><td>the multiplier </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a6c14f79538439d238fdc95bc4a508f8b">mu_</a> = mu; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8b5c4a1eea1b1002521ae54e49dce2a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b5c4a1eea1b1002521ae54e49dce2a4">&#9670;&nbsp;</a></span>setNormalConsistency()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setNormalConsistency </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>consistent</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the flag if the input normals are oriented consistently. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">consistent</td><td>set it to true if the normals are consistently oriented </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a8d230c0cd46619352ee921315e576677">consistent_</a> = consistent; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a05c546fbd885e103573960ff22d70454"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05c546fbd885e103573960ff22d70454">&#9670;&nbsp;</a></span>setSearchRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">pcl::GreedyProjectionTriangulation</a>&lt; PointInT &gt;::setSearchRadius </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the sphere radius that is to be used for determining the k-nearest neighbors used for triangulating. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the sphere radius that is to contain all k-nearest neighbors </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>This distance limits the maximum edge length! </dd></dl>
<div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;{ <a class="code" href="classpcl_1_1_greedy_projection_triangulation.html#a7473d8f0ae4d2f96b6b0eb45d502e99a">search_radius_</a> = radius; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>surface/include/pcl/surface/<a class="el" href="gp3_8h_source.html">gp3.h</a></li>
<li>surface/include/pcl/surface/impl/<a class="el" href="gp3_8hpp_source.html">gp3.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_greedy_projection_triangulation.html">GreedyProjectionTriangulation</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
